问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c语言 倒置链表的递归方法

发布网友 发布时间:2022-05-14 17:58

我来回答

2个回答

热心网友 时间:2023-07-29 15:38

#include<stdio.h>
#include<stdlib.h>
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;i<=n;i++)
{
p=(Linklist)malloc(sizeof(node));
p->data=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;i<n;i++)
{
bef=L;
while(bef->next->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
{
reserve_digui(L->next,n-1);
}
printf("%d ",L->data);

}

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;
}

看了lz的程序,感觉lz没有理解递归的精髓……追问谢谢,我的程序学得不好。。。递归真心不太懂。。。可是你写的这个是顺序输出啊。。。不是我想要的结果。。

追答#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)

n是干嘛的

还有这非递归的 倒置算法 你自己想的 ?追问n是元素个数啊。。。当然自己写的。。。学得不好写的有点乱您就凑和着看吧。。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
街头篮球手游中锋攻略汇总 C位攻略大全 街头篮球手游中锋有什么技巧 中锋C技巧详解 php一个表单提交数据怎么区分开,隐藏域可以吗,如果可以怎么用。 梦见牙掉光了什么预兆 梦见牙齿掉完了是什么征兆 梦见牙齿全掉了是什么预兆 梦见一口牙全部掉了是什么预兆 教师年度考核不认课的领导班子成员,干的工作不少,怎样考核办法公平... 湖北省郧西县义务教育学校绩效工资实施办法绩效工资总量和水平的... 事业单位年底是否有绩效奖金的 链表 倒置 c++ 我想吃一些东西。用英语翻译 如题,如何将单链表进行部分逆置? 我想吃饭用英语翻译 数据结构的链表倒置问题。函数看不懂 我想吃东西翻译成英语 c单链表倒置代码看不懂。。 我想吃饭用英语怎么说 怎么将单链表倒置 我和朋友想去西岭雪山玩三天两夜 问题是以前从来没去过不知道该怎么办 在贴吧看到一些露营的 爬 去一趟西岭雪山要多少钱,最好具体点,可以自己带帐篷不? 编织袋上喷码生产日期及二维码的喷码机 我七月份想去西岭雪山黑水河露营,请问有什么车能去?具体路线,谢谢 想端午节去西岭雪山露营,请问路况和攻略是怎样的呢?相比崇州的鸡冠山哪个更好?西岭雪山露营需要门票吗 西岭雪山露营有帐篷出租吗 现在去西岭雪山可以租帐篷吗,价格大概是多少呢? 1398苹果电脑是多少瓦充电器 康雅馨个人资料? 储镒恬个人资料? 《天使之路》袁博超个人资料介绍? “我想吃饭”翻译成英语 我想要吃东西的翻译, I ___ eating something. 不要want的。 链表的创建与倒置 我也想吃,用英语怎么说 C语言新手编程问题 链表的倒置 翻译 我饿了,我想要一些吃的东西。 我想要吃很多好吃的东西的翻译是:什么意思 给定一个不带头结点的单链表,写出将链表倒置的算法。 我晚饭想吃牛肉和蔬菜。翻译为英语? 红米手机nfc绑定校园卡为什么直接跳到微信公交卡 请问这一段链表逆置的代码是什么意思 我想卖自己的qq靓号,该怎么操作? 我的qq靓号9位数,用了13年,现在想卖掉,不知道怎么操作。 写一个算法,借助栈将一个单链表倒置 C语言链表逆序? 黑龙江八一农垦大学好吗 我很喜欢吃,我喜欢的食物有鸡蛋,西红柿,土豆,鸡肉,鱼肉用英语怎么翻译 现货原油短线要看哪些指标? 谁知道腾讯公司的靓号QQ怎么卖的啊?? 我想想你吃饭用英文怎么说 白萝卜什么时间种比较好?种植时应该注意什么?