使用 C 语言删除链表的头节点和尾节点的逻辑。


链表使用动态内存分配,即它们会根据需要增长和缩小。它是由节点组成的集合。

节点有两个部分,分别是数据和链接。下面将解释这些部分。

链表上的操作

链表上有三种操作,如下所示:

  • 插入
  • 删除
  • 遍历

删除

  • 识别节点。
  • 调整链接,以便节点的释放不会使列表成为不连贯的组件。
  • 返回/显示要删除的元素。
  • 释放内存。

删除头节点

请按照以下步骤在 C 编程语言中删除头节点。

1. void del_head()
2. {
3. int x;
   Node *temp;
4. if(Head==NULL)
5. {
6. printf("List is empty");
7. return;
8. }
9. x=Head->ele;
10. temp=Head;
11. if(Head==Tail)
12. Head=Tail=NULL:
13. Else
14. Head=Head->next;
15. printf("Deleted element %d",x);
16. free(temp);
17. }

这里,

步骤 4 - 检查列表是否为空。

步骤 9 - 读取要删除的元素。

步骤 10 - 头节点由 temp 指针引用。

步骤 11 - 检查是否为最后一次删除。

步骤 14 - 将头指针移动到列表中的下一个元素。

步骤 15 - 显示要删除的元素。

步骤 16 - 释放内存。

删除尾节点

请按照以下步骤在 C 编程语言中删除尾节点。

1. void del_tail()
2. {
3. int x;
4. Node *temp;
5. if(Head==NULL)
6. {
7. printf("List is empty");
8. return;
9. }
10. temp=Head;
11. while(temp->next !=Tail)
12. temp=temp->next;
13. x=Tail->ele;
14. Tail=temp;
15. Temp=temp->next
16. Tail->next=NULL;
17. printf("Deleted element %d",x);
18. free(temp);
19. }

这里,

步骤 4 - 检查列表是否为空。

步骤 10、11、12 - 将 temp 指针移动到列表中倒数第二个节点。

步骤 13 - 读取要删除的尾节点元素。

步骤 14 - 将尾指针移动到倒数第二个节点。

步骤 15 - 将 temp 指针移动到列表的最后一个节点。

步骤 16 - 删除尾节点到 temp 节点的引用。

步骤 17 - 显示要删除的元素。

步骤 18 - 释放内存。

更新于: 2021年3月25日

423 次查看

开启你的职业生涯

通过完成课程获得认证

开始学习
广告