怎么编程一个顺序表

时间:2025-01-26 23:42:12 网络游戏

编程一个顺序表通常涉及定义顺序表的数据结构、初始化顺序表、插入元素、删除元素、查找元素以及打印顺序表等操作。以下是一个简单的C语言实现顺序表的示例:

定义顺序表结构体

```c

typedef int ElemType;

typedef struct {

ElemType *elem;

int length;

int listsize;

} SqList;

```

初始化顺序表

```c

Status InitList(SqList *L) {

L->elem = (ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType));

if (!L->elem) return 0;

L->length = 0;

L->listsize = LIST_INIT_SIZE;

return 1;

}

```

在指定位置插入元素

```c

Status ListInsert(SqList *L, int i, ElemType e) {

if (L->length == L->listsize) {

printf("顺序表已满,不能插入元素!\n");

return 0;

}

if (i < 1 || i > L->length + 1) {

printf("插入位置不合法!\n");

return 0;

}

for (int j = L->length; j >= i; j--) {

L->elem[j] = L->elem[j - 1];

}

L->elem[i - 1] = e;

L->length++;

return 1;

}

```

在指定位置删除元素

```c

Status ListDelete(SqList *L, int i, ElemType *e) {

if (L->length == 0) {

printf("顺序表为空,不能删除元素!\n");

return 0;

}

if (i < 1 || i > L->length) {

printf("删除位置不合法!\n");

return 0;

}

*e = L->elem[i - 1];

for (int j = i - 1; j < L->length - 1; j++) {

L->elem[j] = L->elem[j + 1];

}

L->length--;

return 1;

}

```

打印顺序表

```c

void PrintList(SqList *L) {

for (int i = 1; i <= L->length; i++) {

printf("%d ", L->elem[i - 1]);

}

printf("\n");

}

```

释放顺序表内存

```c

void DestroyList(SqList *L) {

free(L->elem);

L->elem = NULL;

L->length = L->listsize = 0;

}

```

示例使用