从尾到头打印链表
2016-01-08 10:02
330 查看
从头到尾打印链表是很正常的思路,但是若要是从尾到头打印链表,再不改变数据结构的情况下,怎么打印呐? 我们想到的是用栈来实现,先将链表从头到尾进行访问,并将其入栈,待链表全部访问完之后,那么我们可以将栈中的内容输出,那么自然就做到了从尾到头打印链表。 在这建立链表的时候遇到了一个问题,以前是习惯使用的是C中的typedef struct,而如今使用类,不习惯。那如何使用类来实现链表的建立呢? 1.建立一个名为Node类,类中有int data,和一个指向Node类型的指针。 2.建立一个名为Linklist的类,类中仅仅只有一个Node *L,即指向Node类型的指针。建立起两个类后,若要建立一个有头结点的单链表,那么将Linklist中的L,首先申请空间。申请1个空间即可。 3.那么我们怎么将建立单链表呐? 我们使用一个for循环,将其中的变量作为其结点的数据。我们使用的是头插法来建立链表。注意的是每次循环都要使用Node 类型的指针,如果使用的是Node类型,会出现每次循环结束后,地址会释放掉,下次循环时还有可能申请的是相同的地址。 for (int i = 0; i < 5; ++i)//建立链表 { Node *node = new Node; node->data = i; node->next = (l.L)->next;
l.L->next = node; } 有了单链表,那么就从头结点的下一个结点开始访问,并入栈,直到单链表访问结束为止。然后开始出栈操作。这样单链表就可以逆序打印了。代码如下:
Node *p = l.L ->next;//指向链表头
while(p != NULL)//入栈 { cout<<"//"<<p->data<<"// ";
s.Push(p->data);
p = p->next; } int node;
while(s.empty() != 1)//出栈 { node = s.Pop();
cout<<node<<" "; }
l.L->next = node; } 有了单链表,那么就从头结点的下一个结点开始访问,并入栈,直到单链表访问结束为止。然后开始出栈操作。这样单链表就可以逆序打印了。代码如下:
Node *p = l.L ->next;//指向链表头
while(p != NULL)//入栈 { cout<<"//"<<p->data<<"// ";
s.Push(p->data);
p = p->next; } int node;
while(s.empty() != 1)//出栈 { node = s.Pop();
cout<<node<<" "; }
相关文章推荐
- C++ string::size_type 类型
- C++构造函数初始化列表与赋值
- char *s 和 char s[] 的区别小结
- 完整备份工具dump
- dd if=/dev/zero of=的含义是什么?Linux 下的dd命令使用详解
- 访问权限
- 连接文件ln
- 单源点最短路径--2
- 单源点最短路径
- 忘记root密码
- 内联函数和constexpr函数
- 文件系统的简单操作df,du
- IP地址与子网划分
- 把Java程序打包成jar文件包并执行
- java读写txt文件
- java读取TXT文件的方法
- 301、404、200、304等HTTP状态
- List双向链表容器
- python——线程与多线程进阶
- 《1024伐木累》-人生最高境界,长的好看