本篇博客是在上一篇博客的基础上扩展的,希望读者在阅读完以下这个链接内容后再看这一篇
(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; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)