永发信息网

4. 试写一算法,对带头结点的单链表实现就地逆置(假设表长大于2)。

答案:2  悬赏:60  手机版
解决时间 2021-02-24 19:24
4. 试写一算法,对带头结点的单链表实现就地逆置(假设表长大于2)。
最佳答案
假设头结点指针head 尾结点指向空
算法如下:
Node* temp->=head->next;
Node* flag=head->next;
while(temp)
{
     flag=temp;
     flag->next=head->next;
     head->next=flag;
     temp->next=temp;
}
解释看图片(画的不好)

全部回答

#include
#include
#define MAXSIZE 100
typedef int datatype;
typedef struct link_node{
datatype data;
struct link_node *next;
}node;
void init(node**p)
{
int x;
node *pre,*q;
pre=*p;
scanf("%d",&x);
while(x!=0)
{
q=(node*)malloc(sizeof(node));
q->data=x;
if(!pre)
{
*p=pre=q;
}
else{
pre->next=q;
pre=q;
}
scanf("%d",&x);
}
pre->next=NULL;
}
node*nizhuan(node*p)
{
node *pre,*q;
node*r;
r=p;
pre=p;
if(!p||!p->next) return p;
else{
q=pre->next;
while(q->next)
{
pre=q;
q=q->next;
pre->next=p;
p=pre;
}
q->next=p;
p=q;
r->next=NULL;
return p;
}
}
void display(node*p)
{
node* q;
q=p;
if(!q) printf("单链表为空!");
else{

while(q)
{
printf("%5d",q->data);
q=q->next;
}
}
printf("\n");

}
main()
{
node *p=NULL;
init(&p);
display(p);
p=nizhuan(p);
display(p);
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
【四好少年童谣】四好少年童谣作文
兰桂坊这个地址在什么地方,我要处理点事
存款余额是什么
大学西路街道地址在哪,我要去那里办事
为什么金属导电导热性最好?(与元素周期表有
水分子能进入细胞壁的结晶区么?如果不能,那
萧十一郎拔出割鹿刀的时候的背景音乐
老婆复婚吧章子君结局
邓州市桑庄镇计划生育技术服务中心地址在什么
B1052,驾驶员座椅安全带预警器线路电阻低是
宝宝是先学会爬还是坐
用 浩瀚 广袤 景致 聆听 灿烂写一段话
大富翁4炒股是买了之后等它赚钱还是买了之后
茶叶专店怎么去啊,有知道地址的么
马尔代夫幸福岛多少钱
推荐资讯
京翰1对1(惠新东街)在什么地方啊,我要过去处
哪些日子结婚对女人不吉利
难民和无国籍人有什么区别?
嘴唇干裂起泡怎么办.是什么原因
美国恐怖故事一至四季中有多少人重复演出?
若q、p都是质数,一x为未知数的方程px+5q=97
我的手机屏幕烂了 换个屏要多少钱
凉茶店要怎样才能生意好点?
【按部就班哪个字错了】按部就班这个词语哪个
英语中something和anything和nothing的区别
中国哪里产的黑枸杞最好
一家亲超市仁寿路店怎么去啊,有知道地址的么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?