欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

C++中LIstNode尾插法建立单链表

发布时间:2023/12/31 49 豆豆
生活随笔 收集整理的这篇文章主要介绍了 C++中LIstNode尾插法建立单链表 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

@yogurt_

在做Acwing 和力扣的编程时,经常有一个节点是ListNode,这里记录一下利用已有已知结构体根据输入利用尾插法创立单链表。

经过查阅资料,理解和最后实现如下:
ListNode结构体的定义

struct ListNode {int val;//当前节点值ListNode *next;//指向下一个节点的指针ListNode(int x) : val(x), next(NULL) {}//给定的构造函数声明;初始化当前结点值为x,指针为空 };

构造一个新的节点的语法

ListNode *p = new ListNode(0);//构造一个新节点,值为0,指针为空

尾插法建立单链表,完整代码

#include <iostream> #include <vector> using namespace std; //单链表结点结构体的定义 struct ListNode {int val;ListNode *next;ListNode(int x) : val(x), next(NULL) {} }; void print(ListNode* head); //vector<int> printListReversingly(ListNode* head); int main() {ListNode *dummy = new ListNode(0);//初始化一个虚拟头结点ListNode *cur = dummy;//尾节点指针初始时指向虚拟头结点cin.get();//接收‘[’字符,并跳过int temp;while (cin >> temp)//接收结点的数值信息{ListNode *tmp = new ListNode(temp);//创建一个临时节点,值为接收的数值信息,指针为空cur->next = tmp;//尾结点的next指向临时结点,也就是连上上一个结点和当前结点cur = tmp;//将尾节点指向临时结点if (cin.get() != ',')//如果不是',',也就是是‘]’的时候,跳出循环,结束建立单链表break;}ListNode *head = dummy->next;//单链表的head为虚拟头结点的nextprint(head);//打印建立的单链表return 0; } //打印建立的单链表 void print(ListNode* head) {ListNode* p = head;while (p != NULL){cout << p->val << " ";p = p->next;}cout << "\n"; }

运行截图

以上注释部分包含个人理解,如果有描述不准确的地方,欢迎交流!转载请注明出处,谢谢!
参考文献
[1]: https://www.cnblogs.com/xiaoxue126/p/9015541.html
[2]: https://bbs.csdn.net/topics/390806135

总结

以上是生活随笔为你收集整理的C++中LIstNode尾插法建立单链表的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。