C语言实现顺序表的基本操作

发布时间 2023-07-03 20:14:05作者: shengcun

下面是使用C语言实现顺序表基本操作的示例代码:

```c
#include <stdio.h>
#include <stdlib.h>

#define MAX_SIZE 100

typedef struct {
int data[MAX_SIZE];
int length;
} SeqList;

void initList(SeqList* list) {
list->length = 0;
}

void insert(SeqList* list, int position, int item) {
if (position < 0 || position > list->length || list->length == MAX_SIZE) {
printf("Invalid position or list is full\n");
return;
}

for (int i = list->length - 1; i >= position; i--) {
list->data[i + 1] = list->data[i];
}

list->data[position] = item;
list->length++;
}

void delete(SeqList* list, int position) {
if (position < 0 || position >= list->length) {
printf("Invalid position\n");
return;
}

for (int i = position; i < list->length - 1; i++) {
list->data[i] = list->data[i + 1];
}

list->length--;
}

int search(SeqList* list, int key) {
for (int i = 0; i < list->length; i++) {
if (list->data[i] == key) {
return i;
}
}

return -1;
}

void display(SeqList* list) {
printf("List elements: ");
for (int i = 0; i < list->length; i++) {
printf("%d ", list->data[i]);
}
printf("\n");
}

int main() {
SeqList list;
int choice, item, position, key, index;

initList(&list);

while (1) {
printf("1. Insert\n");
printf("2. Delete\n");
printf("3. Search\n");
printf("4. Display\n");
printf("5. Exit\n");

printf("Enter your choice: ");
scanf("%d", &choice);

switch (choice) {
case 1:
printf("Enter the element to be inserted: ");
scanf("%d", &item);
printf("Enter the position: ");
scanf("%d", &position);
insert(&list, position, item);
break;
case 2:
printf("Enter the position: ");
scanf("%d", &position);
delete(&list, position);
break;
case 3:
printf("Enter the key to search: ");
scanf("%d", &key);
index = search(&list, key);
if (index != -1) {
printf("Element found at position: %d\n", index);
} else {
printf("Element not found\n");
}
break;
case 4:
display(&list);
break;
case 5:
exit(0);
default:
printf("Invalid choice\n");
break;
}
}

return 0;
}
```

这段代码实现了顺序表的基本操作,包括初始化顺序表、插入元素、删除元素、查找元素和显示顺序表内容。在`main`函数中,通过一个循环菜单,用户可以选择不同的操作。根据用户选择的操作,调用相应的函数进行处理。

顺序表的结构体定义中,`data`数组用于存储元素,`length`记录当前顺序表的长度。`initList`函数用于初始化顺序表,`insert`函数用于在指定位置插入元素,`delete`函数用于删除指定位置的元素,`search`函数用于查找指定元素的位置,`display`函数用于打印顺序表的内容。

可以根据需要修改和扩展这段代码,以满足特定的顺序表操作要求。