用C语言编写一个代码,完成以整形数据为数据元素的顺序表的定义、初始化、输入、插入、删除及数据的显示
时间: 2024-10-10 12:13:28 浏览: 33
在C语言中,我们可以创建一个简单的顺序表结构,用于存储整数。以下是基本的定义、初始化、输入、插入、删除以及显示数据的操作:
首先,我们需要定义一个结构体`ListNode`表示单链表节点,包含整数值和指向下一个节点的指针:
```c
typedef struct ListNode {
int data;
struct ListNode* next;
} ListNode;
```
然后我们定义顺序表结构体`SequentialList`和一些辅助函数:
```c
typedef struct SequentialList {
ListNode* head;
int size; // 序列表长度
} SequentialList;
// 初始化顺序表
void init_list(SequentialList* list) {
list->head = NULL;
list->size = 0;
}
// 输入整数并添加到顺序表末尾
void insert_int(SequentialList* list, int value) {
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
if (newNode == NULL) {
printf("Memory allocation failed.\n");
return;
}
newNode->data = value;
newNode->next = NULL;
if (list->head == NULL) {
list->head = newNode;
} else {
ListNode* temp = list->head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = newNode;
}
list->size++;
}
// 删除指定位置的元素(从1开始计数)
void delete_item(SequentialList* list, int index) {
if (index < 1 || index > list->size) {
printf("Invalid index.\n");
return;
}
if (index == 1 && list->head != NULL) {
ListNode* temp = list->head;
list->head = temp->next;
free(temp);
list->size--;
return;
}
ListNode* prev = list->head;
ListNode* curr = list->head->next;
for (int i = 1; i < index - 1 && curr != NULL; i++) {
prev = curr;
curr = curr->next;
}
if (curr != NULL) {
prev->next = curr->next;
free(curr);
list->size--;
} else {
printf("Item not found.\n");
}
}
// 显示顺序表内容
void display_list(const SequentialList* list) {
ListNode* temp = list->head;
if (temp != NULL) {
while (temp != NULL) {
printf("%d -> ", temp->data);
temp = temp->next;
}
printf("NULL\n");
} else {
printf("Empty list.\n");
}
}
```
现在你可以通过以下方式使用这些函数:
```c
int main() {
SequentialList myList;
init_list(&myList);
// 插入元素
insert_int(&myList, 5);
insert_int(&myList, 10);
insert_int(&myList, 15);
// 显示元素
display_list(&myList); // 输出: 5 -> 10 -> 15 -> NULL
// 删除元素
delete_item(&myList, 2); // 删除第二个元素(索引从1开始)
// 再次显示元素
display_list(&myList); // 输出: 5 -> 15 -> NULL
return 0;
}
```
阅读全文