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为虚拟头结点的next
	print(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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值