#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
#define ERROR 0
#define OK 1
typedef int ElemType;
typedef struct {
int* elem; //指向数据元素的基地址
int length; //线性表的当前长度
}SqList;
int InitList(SqList &L)//初始化顺序表
{
L.elem = new ElemType[MAXSIZE];
if (!L.elem) exit(EXIT_FAILURE);
L.length = 0;
return OK;
}
bool ListInsert(SqList*& L, int i, ElemType e)// 依次在 L 尾部插入元素-1,21,13,24,8;
{
int j;
if (i<1 || i>L->length + 1)
return false;
i--;
for (j = L->length; j > i; j--)
L->elem[j] = L->elem[j - 1];
L->elem[i] = e;
L->length++;
return true;
}
void input(SqList L)//输出顺序表 L;
{
ElemType i = 0;
while (L.length != 0) {
for (i = 0; i < 5; i++)
printf("%d", L.elem[i]);
}
}
int ListLength(SqList* L)//输出顺序表 L 长度;
{
return(L->length);
}
bool ListEmpty(SqList* L)//判断顺序表 L 是否为空;
{
return(L->length == 0);
}
bool GetElem(SqList L, int i, ElemType& e)//输出顺序表 L 的第 3 个元素;
{
if (i<1 || i>L.length) return ERROR;
e = L.elem[i - 1];
return OK;
}
int LocateElem(SqList L, ElemType e)//输出元素 24 的位置;
{
for (int i = 0; i < L.length; i++)
if (L.elem[i] == e) return i + 1;
return 0;
}
bool ListInsert(SqList& L, int i, ElemType e)//在 L 的第 4 个元素前插入元素 0
{
if ((i < 1) || (i > L.length + 1))
return ERROR;
if (L.length == MAXSIZE)
return ERROR;
int j;
for (j = L.length - 1; j >= i - 1; j--)
L.elem[j + 1] = L.elem[j];
L.elem[i - 1] = e;
++L.length;
return OK;
}
void in_put(SqList L)//输出顺序表 L;
{
for (int i = 0; i < L.length; i++) {
printf("%d ", L.elem[i]);
}
printf("\n");
}
int ListDelete(SqList& L, int i)//删除 L 的第 5 个元素;
{
if ((i < 1) || (i > L.length)) return ERROR;
int j;
for (j = i-1; j < L.length - 1; j++)
L.elem[j] = L.elem[j + 1];
--L.length;
return OK;
}
int main()
{
SqList L;
printf("初始化顺序表:\n");
InitList(L);
printf("依次在L尾部插入元素-1,21,13,24,8\n");
ListInsert(L, 1, -1);
ListInsert(L, 2, 21);
ListInsert(L, 3, 13);
ListInsert(L, 4, 24);
ListInsert(L, 5, 8);
printf("输出顺序表 L\n");
in_put(L);
printf("输出顺序表L的长度\n%d\n", ListLength(&L));
printf("判断顺序表L是否为空\n");
if (ListEmpty(&L))
printf("顺序表L为空\n");
else
printf("顺序表L不为空\n");
printf("输出顺序表L的第3个元素\n");
ElemType e;
int pos = 3;
if (!GetElem(L, pos, e))
printf("未找到位置为%d的元素\n", pos);
else
printf("%d\n", e);
printf("输出元素24的位置\n%d\n", LocateElem(L, 24));
printf("在L的第4个元素前插入元素0\n");
ListInsert(L, 4, 0);
printf("输出顺序表L\n");
in_put(L);
printf("删除L的第5个元素\n");
ListDelete(L, 5);
printf("输出顺序表L\n");
in_put(L);
printf("\n");
return 0;
}
数据结构线性表
最新推荐文章于 2024-09-25 20:49:26 发布