链表操作:插入与删除

需积分: 1 0 下载量 55 浏览量 更新于2024-09-16 收藏 2KB TXT 举报
"这篇代码示例是关于C语言实现的数据结构链表操作,包括创建链表、插入元素和删除元素。" 在计算机科学中,数据结构是存储和组织数据的重要方式,而链表是一种基本的数据结构。链表与数组不同,它不连续存储元素,而是通过节点间的指针连接来实现元素之间的关系。本示例主要讲解了单链表的使用,包括链表的创建、元素插入和删除。 首先,定义了一个名为`NODE`的结构体,用于表示链表中的节点。每个节点包含两个部分:`data`用于存储数据,`next`是一个指针,指向下一个节点。 ```c typedef struct node{ int data; struct node* next; } NODE; ``` 在主函数`main`中,首先分配一个头节点`head`,并将它的`next`指针设置为`NULL`。接着调用`ListCreate_L`函数创建链表,`show`函数显示链表,然后通过用户输入进行元素的插入和删除,并再次显示链表。 `ListCreate_L`函数用于创建链表,它接受一个头节点作为参数。用户输入一系列整数,直到输入-1表示结束,这些整数会被添加到链表中。 ```c void ListCreate_L(NODE* head){ NODE* p, *q; int x; // ... } ``` `ListInsert_L`函数负责在链表中插入元素,它需要知道插入的位置(由`a`指定)和要插入的值(由`b`指定)。函数返回值为1表示成功插入,0表示未找到插入位置。如果链表为空或找到了正确的位置,就将新节点插入;否则,遍历链表直到找到插入位置或者到达链表末尾。 ```c int ListInsert_L(NODE* head, int a, int b){ NODE* p, *q; q = (NODE*)malloc(sizeof(NODE)); q->data = b; q->next = NULL; // ... } ``` `ListDelete_L`函数用于删除指定位置的元素,同样需要知道要删除的元素值`a`。它会遍历链表,找到匹配的节点并删除,返回值无特殊意义。 ```c int ListDelete_L(NODE* head, int a){ // ... } ``` 最后,`show`函数遍历链表并打印所有元素,帮助用户查看链表当前状态。 链表的操作虽然比数组复杂,但具有插入和删除操作时效率高的优势,因为它们只需要改变几个指针,而不需要移动大量元素。本示例提供了一个基础的链表操作框架,对于理解和实践链表操作非常有帮助。