/*剑指offer p59
逆向输出当链表的所有节点的值
当链表非常长的时候,递归的层次比较深,从而有可能导致函数调用栈溢出
*/
#include<stdio.h>
#include<stdlib.h>
int Array[100];
int top=-1;
typedef struct node
{
int data;
struct node *next;
}LinkNode;
LinkNode* createLinkList()
{
int x;
LinkNode* h;
LinkNode *s,*t;
printf("请输入链表的数据域的值");
scanf("%d",&x);
h=(LinkNode *)malloc (sizeof(LinkNode));
h->next=NULL;
t=h;
while(x!=-1)
{
s=(LinkNode *)malloc(sizeof(LinkNode));
s->data=x;
s->next=t->next;
t->next=s;
t=s;
scanf("%d",&x);
}
return h;
}
void printLink1(LinkNode *h)
{
LinkNode* p;
int i;
for(p=h->next;p;p=p->next)
Array[++top]=p->data;
for(i=top;i>-1;i--)
printf("%d ",Array[top--]);
}
void printLink2(LinkNode *h)
{
if(!h->next)
return;
printLink2(h->next);
printf("%d ",h->next->data);
}
void printLink3(LinkNode *h)
{
LinkNode *p,*end=NULL;
while(h->next)
{
for(p=h->next;p->next!=end;p=p->next);
printf("%5d",p->data);
end=p;
}
}
int main(void)
{
LinkNode *head;
head=createLinkList();
printLink1(head);
// printLink2(head);
//printLink3(head);
}
逆向输出链表的值
最新推荐文章于 2024-03-11 16:56:10 发布