数据结构_链表的链接

链表主要包括单向链表和双向链表,当然包含单向循环链表和双向循环链表。
其中,比较重要的一点是存在一个叫做哑元素的东西,保证链表物理上非空。实际上链表中的数据都在哑元素之后。

链表的操作主要有插入,删除,移动,查找等。

下面主要说一下链表的结点链接。

实现:
【1】链表结点的手动链接,包含ABC三个结点,数值data分别为1,2,3.
声明结构体变量:

struct snode
{
	int data;
	snode* next;
};

具体结点链接:

snode sentinal;
	snode* header = &sentinal;//指向哑节点
	snode A = { 1,NULL };
	snode B = { 2,NULL};
	snode C = { 3,NULL };
	snode* p;//操作指针
	p = header;//下面是链接结点具体过程
	p->next = &A;
	p = p->next;
	p->next = &B;
	p = p->next;
	p->next = &C;

全部代码:

#include<pch.h>
#include <iostream>
//#include<forward_list>
//#include<list>
using namespace std;

struct snode
{
	int data;
	snode* next;
};


int main()
{

	//单向链表
	snode sentinal;
	snode* header = &sentinal;//指向哑节点
	snode A = { 1,NULL };
	snode B = { 2,NULL};
	snode C = { 3,NULL };
	snode* p;//操作指针
	p = header;//下面是链接结点具体过程
	p->next = &A;
	p = p->next;
	p->next = &B;
	p = p->next;
	p->next = &C;
	//print
	for (p = header->next; p != NULL; p = p->next)
	{
		cout << p->data << endl;
	}

	return 0;
}

运行结果:
在这里插入图片描述

【2】一次申请全部结点,并且打印
代码:

#include<pch.h>
#include <iostream>
#include<vector>
using namespace std;

struct snode
{
	int data;
	snode* next;
};


int main()
{
	//一次全申请并链接
	vector<snode> V = { {},{1,NULL},{2,NULL},{3,NULL} };
	snode* header, *p;//指针
	header = p = &V[0];//指向哑元素
	for (size_t i = 1; i < V.size(); ++i)//链接结点
	{
		p->next = &V[i];
		p = p->next;
	}

	//print
	for (p = header->next; p != NULL; p = p->next)
	{
		cout << p->data << endl;
	}

	return 0;
}

运行结果:
在这里插入图片描述

发布了113 篇原创文章 · 获赞 69 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/shizheng_Li/article/details/104455743