21xrx.com
2024-12-22 16:45:39 Sunday
登录
文章检索 我的文章 写文章
C++实现链表的基本操作(含注释)
2023-07-09 16:33:21 深夜i     --     --
C++ 链表 基本操作 实现 注释

链表是一种动态数据结构,C++编程语言中也可以通过指针来实现链表的基本操作。链表由一系列节点组成,每个节点包含两个信息,一个是数据元素,另一个是一个指向下一个节点的指针。

链表的基本操作包括:插入,删除和遍历。下面我们将介绍在C++中如何实现这些操作。

插入操作:

链表的插入操作通常有两种情况:在链表的头部插入和在链表的尾部插入。在链表头部插入远比在链表尾部插入效率高一倍,因此我们通常优先考虑在链表头部插入。

// 链表节点结构体定义

struct Node {

  int data;

  Node* next;

};

// 在链表头部插入

void insertAtHead(Node*& head, int data) {

  Node* newNode = new Node;

  newNode->data = data;

  newNode->next = head;

  head = newNode;

}

// 在链表尾部插入

void insertAtTail(Node*& head, int data) {

  Node* newNode = new Node;

  newNode->data = data;

  newNode->next = NULL;

  if (head == NULL)

    head = newNode;

    return;

  Node* lastNode = head;

  while (lastNode->next != NULL)

    lastNode = lastNode->next;

  lastNode->next = newNode;

}

删除操作:

删除链表中的节点通常也有两种情况:删除链表头部的节点和在链表中间或结尾删除某个节点。

// 删除链表头部的节点

void deleteAtHead(Node*& head) {

  if (head == NULL)

    return;

  Node* oldHead = head;

  head = head->next;

  delete oldHead;

}

// 在链表中间或结尾删除某个节点

void deleteNode(Node*& head, int data) {

  if (head == NULL)

    return;

  if (head->data == data) {

    deleteAtHead(head);

    return;

  }

  Node* previousNode = head;

  Node* currentNode = head->next;

  while (currentNode != NULL && currentNode->data != data)

    previousNode = currentNode;

    currentNode = currentNode->next;

  if (currentNode == NULL)

    return;

  previousNode->next = currentNode->next;

  delete currentNode;

}

遍历操作:

遍历链表就是访问链表中的每个节点,可以用循环实现。

// 遍历链表

void traverse(Node* head) {

  Node* currentNode = head;

  while (currentNode != NULL)

    // 访问节点

    cout << currentNode->data << " ";

    currentNode = currentNode->next;

}

链表的实现可以帮助我们更好地理解动态数据结构的基本原理。当我们需要在编写程序时使用连续空间不够或无法预先确定元素个数的情况下,链表也是一种很好的选择。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复