百度之前 出过一个面试题 说 :给一个单链表,如何反向输出?
= =可能有的小伙伴 看过我 上一期的 单链表反转 , 说将 单链表反转! 然后 逐个输出! 嗯,这种 方法的确是可以的,不过 会 破坏 单链表的结构! 那再反转一次,两级反转!! ……
的确可以呢,不过 应该会耗时很长吧,所以 ,直接 用栈 一次性弄好不就 行啦
什么是栈?之前的博客 写过 ,是一种先进后出的数据结构
因此~ 只要我们 按顺序 把 头结点 依次存入栈中~~~ 那么不就能够 在弹栈的时候 根据结点的不同 输出 了~?
具体代码如下:
#include<stdlib.h>
#include<stdio.h>
struct node // 结点
{
int value ;
node * next;
} ;
node * create(void)
{
node *head;
node *p1, *p2;
p1=p2 = (node *)malloc(sizeof (node)) ;
scanf("%d",&p1->value);
head=p1;
while(p1->value!=-1)
{
p2=p1;
p1=(node * )malloc(sizeof(node));
scanf("%d"