发布网友 发布时间:2022-05-14 17:58
共2个回答
热心网友 时间:2023-07-29 15:38
#include<stdio.h>追答#include
#include
typedef struct node{
int data;
struct node *next;
}node,*Linklist;
Linklist create_linklist(Linklist &L,int n)
{ //建立有头结点的链表
L=(Linklist)malloc(sizeof(node));
L->next=NULL;
Linklist p;
int i;
for(i=1;idata=rand()%100;
p->next=L->next;
L->next=p;
}
return L;
}
Linklist reserve_fei(Linklist L,int n)
{ //非递归算法
Linklist head,pre,bef;
head=L;
pre=L;
bef=L;
while(pre->next)
{
pre=pre->next;
}
int i;
for(i=1;inext->next)
{
bef=bef->next;
}
pre->next=head->next;
head->next=pre;
head=pre;
pre=bef;
pre->next=NULL;
}
return L;
}
void reserve_digui(Linklist L,int n)
{ //递归的,但我写错了,不知道该怎么写。。。求助~~
Linklist head=L,pre;
if(n==0)
return ;
else
{
printf("%d ",L->data);
reserve_digui(L->next,n-1);
}
}
int main()
{
int n;
scanf("%d",&n);
Linklist L,L1,L2,q;
L=create_linklist(L,n);
printf("原链表为:\n");
q=L->next;
while(q)
{
printf("%d ",q->data);
q=q->next;
}
printf("\n不用递归的结果是:\n");
L1=reserve_fei(L,n);
q=L1->next;
while(q)
{
printf("%d ",q->data);
q=q->next;
}
printf("\n");
printf("用递归的结果是:\n");
reserve_digui(L->next,n);
return 0;
}
热心网友 时间:2023-07-29 15:38
Linklist reserve_fei(Linklist L,int n)