教授先生带你学习链表:双向链表3

教授先生带你学习链表:双向链表3,第1张

教授先生带你学习链表:双向链表3

 本篇博客是在上一篇博客的基础上扩展的,希望读者在阅读完以下这个链接内容后再看这一篇

(9条消息) 教授先生带你学习链表:链表节点的删除与增添2_教授先生的博客-CSDN博客

题目描述:

输入10个整数存放在数组中,再逆序显示这10个数。

输入要求:

从键盘输入10个整数。

输出要求:

逆序显示这10个数。每个数据后面都有一个空格,最后一个数据输出后还需要换行。

输入样例

6 7 9 0 -6 16 18 -90 19 10

输出样例

10 19 -90 18 16 -6 0 9 7 6

#include
#include 
using namespace std;
	int a,b,n,m;
struct node{//重新定义结构体的结构, 分为 数据部分,next指针(指向下一个位置),before指针(指向上一个位置) 
	int data;//数据
	node* next;//指向下一结点
	node* before;//指向上一节点 
}; 
node* build(node* head)  //这里为什么是node*呢? 原因是要返回 最后一个结构体指针的地址,再赋给主函数中的 tail指针,逆序显示 
{
	node*p=head,*q;
	p->before=NULL; 
	for(int i=1;i<=10;++i)
	{
		q=new node;
		scanf("%d",&q->data);//存储数据到第二个结构体p的data里                                                                            或者*(q).data q->next(*q).next
		p->next=q;//第一个结构体(head)p的next指针连接下个q的首地址 
		q->before=p;//q的before指针连接上个p的首地址 实现了双向连接 
		p=q; //形成循环 
	}
	p->next=NULL;//当执行到第十一个结构体时,让第十一个结构体的next指针指向空 
	return p; //此时p为第十一个结构体的地址,返回该地址
	          //这里自定义函数的类型 node* 是结构体指针,在主函数中,tail这个结构体 就等价于 这里的第十一个结构体 
}

void show (node*tail)
{
while(tail->before!=NULL)//逆序显示,从第十一个结构体逆序输出每个节点的数据寻找到head节点时终止运行 
{
	printf("%d ",tail->data);
	tail=tail->before;
}
	printf("n");

}
int main(void)
{

	 node* head;
	 //head=(node*)malloc(sizeof(node));//c语言 #include 
	 head=new node;//c++ 
	 node*tail=build(head);//将最后一个结构体赋给tail 这个结构体, tail就等价于 这里的第十一个结构体  
	 show(tail);
	 return 0;
	
 } 

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5718470.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存