logo

单链表的基本操作:创建、插入、删除与查找

作者:有好多问题2024.01.18 05:16浏览量:82

简介:本文将详细介绍单链表的基本操作,包括创建、插入、删除和查找节点。通过实例和代码,帮助读者理解这些操作在单链表数据结构中的应用。

单链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。以下是单链表的基本操作:
一、创建单链表
创建一个单链表需要定义节点结构体和单链表结构体。节点结构体包含数据和指向下一个节点的指针,而单链表结构体则包含头节点和节点数量。

  1. struct Node {
  2. int data;
  3. struct Node* next;
  4. };
  5. struct LinkedList {
  6. struct Node* head;
  7. int size;
  8. };

二、插入节点
插入节点是单链表中最常见的操作之一。在单链表的头部插入节点需要更新头节点指针,而在尾部插入节点则需要遍历链表直到最后一个节点,并更新其next指针。
在链表的中间插入节点需要找到合适的插入位置,并更新前驱节点和后继节点的指针。以下是插入节点的示例代码:

  1. void insertNode(struct LinkedList* list, int data) {
  2. struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
  3. newNode->data = data;
  4. newNode->next = NULL;
  5. if (list->head == NULL) {
  6. list->head = newNode;
  7. list->size++;
  8. return;
  9. }
  10. struct Node* current = list->head;
  11. while (current->next != NULL) {
  12. current = current->next;
  13. }
  14. current->next = newNode;
  15. list->size++;
  16. }

三、删除节点
删除节点时需要找到要删除的节点,并将其前驱节点的next指针指向其后继节点,同时释放被删除节点的内存。以下是删除节点的示例代码:

  1. void deleteNode(struct LinkedList* list, int data) {
  2. struct Node* current = list->head;
  3. struct Node* prev = NULL;
  4. while (current != NULL && current->data != data) {
  5. prev = current;
  6. current = current->next;
  7. }
  8. if (current == NULL) return; // Data not found in the list.
  9. if (prev == NULL) { // Deleting the head node.
  10. list->head = current->next;
  11. } else { // Deleting a middle or tail node.
  12. prev->next = current->next;
  13. }
  14. free(current); // Free the memory.
  15. list->size--; // Decrement the size of the list.
  16. }

四、查找节点
查找节点需要遍历链表,比较每个节点的数据与目标值。如果找到目标值,则返回该节点的指针,否则返回NULL。以下是查找节点的示例代码:
c++ 类型不匹配 可能是C语言与C++语言混合编程了

相关文章推荐

发表评论

活动