21xrx.com
2025-03-20 14:26:40 Thursday
文章检索 我的文章 写文章
C++实现尾插法建立单链表
2023-07-05 00:51:10 深夜i     --     --
C++ 尾插法 单链表 建立

单链表是一种常见的数据结构,可以用于各种场景。其中,尾插法是一种建立单链表的较为简单的方法,适用于链表元素数量较多的场景。本文将介绍使用C++实现尾插法建立单链表的方法。

首先,我们需要定义单链表的节点结构体,包括数据域和指针域。例如:

struct ListNode {
  int val;
  ListNode *next;
  ListNode(int x) : val(x), next(NULL) {}
};

这个结构体包含一个整数类型的val,表示节点的值,还有一个指向下一个节点的指针类型的next。其中,构造函数是为了方便创建节点时初始化val和next。

接下来,我们可以在main函数中编写一个叫做createList的函数来实现尾插法建立单链表。该函数的输入参数为一个int类型的数组a和该数组的长度n,其返回值是一个指向链表头节点的指针。

下面是createList函数的实现代码:

ListNode* createList(int a[], int n) {
  ListNode *head = new ListNode(0);
  ListNode *tail = head;
  for (int i = 0; i < n; ++i) {
    ListNode *node = new ListNode(a[i]);
    tail->next = node;
    tail = tail->next;
  }
  return head->next;
}

该函数首先创建一个虚拟头节点head,并用tail指针指向该节点。然后,遍历数组a,创建一个包含当前元素值的节点node,并将该节点插入到尾节点后面。每次插入完成后,将尾节点指针tail指向新插入的节点。最后,返回head指针的下一个节点,也就是真正的链表头节点。

最后,在main函数中,可以使用以下代码来调用createList函数,并输出链表的所有节点值:

int a[] = 4;
int n = sizeof(a) / sizeof(int);
ListNode *head = createList(a, n);
while (head != NULL)
  cout << head->val << " ";
  head = head->next;
cout << endl;

该代码创建了一个包含5个元素的数组a,然后调用createList函数来建立单链表。最后,使用while循环遍历链表的所有节点,并输出其值。

通过本文的介绍,相信大家已经掌握了使用C++实现尾插法建立单链表的方法。当然,这只是单链表操作中的一个小小的片段,读者可以继续深入学习链表数据结构的相关知识。

  
  

评论区