c 语言 递归法倒叙打印链表的节点

来源:互联网 发布:轩辕传奇辅助软件 编辑:程序博客网 时间:2024/06/05 22:38
#include<stdio.h> 
#include<stdlib.h>
//单链表有头结点的链表 
typedef int ElemType; 
typedef struct node
{
ElemType data;
struct node *next;
}Node,*LINK;
LINK create()//创建一个链表 
{
LINK phead=(LINK)malloc(sizeof(Node));
LINK pend,pnew;
ElemType data;
phead->next=NULL;
pend=phead;
printf("请输入数据:\n");
scanf("%d",&data);
while(data!=0)
{
pnew=(LINK)malloc(sizeof(Node));
pnew->data=data;
pnew->next=NULL;
pend->next=pnew;
pend=pnew;
scanf("%d",&data);
}
return phead;
}
void display(LINK phead)//遍历链表 
{
LINK ptemp=(LINK)malloc(sizeof(Node));
  ptemp=phead->next;
  while(ptemp!=NULL)
  {
  printf("%d ",ptemp->data);
  ptemp=ptemp->next;
  }
  printf("\n");
}
void addNode(LINK phead,int value)
{
LINK pnew=(LINK)malloc(sizeof(Node)),p;
pnew->next=NULL;
pnew->data=value;
if(phead->next==NULL)
phead->next=pnew;
else
{
p=phead;
while(p->next!=NULL)
{
p=p->next;
}
p->next=pnew;
}
}
void printContrry(LINK phead)//递归法倒叙打印链表的节点 
{
LINK p=phead->next;
if(p==NULL)
{
return ;
}
else
printContrry(p);
printf("%d ",p->data);
}
int main()
{
LINK phead=(LINK)malloc(sizeof(Node));
int data=0;
phead=create();
display(phead);
printf("\n倒叙打印的链表:");
printContrry(phead);
//display(phead);
return 0;
}
0 0
原创粉丝点击