当前位置:首页 » 操作系统 » 链表逆序的算法

链表逆序的算法

发布时间: 2024-09-09 16:45:46

1. C语言用链表实现逆序输出

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>

//定义链表节点
typedefstructLNode
{intdata;
structLNode*next;
}LNode,*Linklist;

//创建链表
Linklistcreate()
{inti,n;//i用于下面循环,n用来存放有效节点的字数
Linklistp,L;
printf("PleaseinputN=");
scanf("%d",&n);
L=(Linklist)malloc(sizeof(LNode));//分配一个不存放有效数据的头结点
L->next=NULL;
for(i=0;i<n;i++)
{p=(Linklist)malloc(sizeof(LNode));//生成新节点
scanf("%d",&p->data);//输入元素值
p->next=L->next;
L->next=p;
}
returnL;//返回头节点;
}
//链表反转输出
LinklistReverseList(LinklistL,intst)//st为1时输出结点数据
{if(L->next!=NULL)
ReverseList(L->next,1);
if(st)printf("%d",L->data);
returnL;
}

voidput(LinklistL)
{Linklistp;
p=L->next;
while(p!=NULL)
{printf("%d",p->data);
p=p->next;
}
printf(" ");
}

intmain()
{LinklistL;
L=create();
printf("A:");put(L);
printf("B:");
ReverseList(L,0);//附加结点未保存数据,故第二参数为0
return0;
}

2. 已知链表的头结点head,写一个函数把这个链表逆序。C++ 代码不是看得很懂。

这个程序的原理就是:假如本来有0-10数(0是头结点,不考虑逆置)按正常顺序排列,现在我把1后面的数断开,这样链表只剩下0->1了。接下来,我把2插入到链表中,就变成了0->2->1,然后在插入3,就变成0->3->2->1,类推,实现1-10的逆置。程序中的p2和p3都是过渡用的结点,你再仔细理解下。

热点内容
校考上传照片 发布:2025-03-15 23:30:02 浏览:850
windowsxp服务器搭建ftp 发布:2025-03-15 23:17:52 浏览:312
2014年数据库工程师 发布:2025-03-15 23:07:42 浏览:245
创见存储卡质量怎么样 发布:2025-03-15 23:07:37 浏览:304
苹果2g和安卓哪个快 发布:2025-03-15 22:52:48 浏览:713
airpods怎么连接安卓手机 发布:2025-03-15 22:47:11 浏览:295
安卓已经删除的app在哪里找 发布:2025-03-15 22:42:09 浏览:434
海量照片存储 发布:2025-03-15 22:23:07 浏览:163
androidgif控件 发布:2025-03-15 22:10:51 浏览:339
我的世界手机版非常好玩的服务器推荐 发布:2025-03-15 22:04:48 浏览:179