| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1224 人关注过本帖
标题:[求助]c语言数据结构(单链表的逆置)
只看楼主 加入收藏
喝酸奶的鱼
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-3-8
收藏
 问题点数:0 回复次数:7 
[求助]c语言数据结构(单链表的逆置)
求这个结构的单链表的逆置算法,比如原来的顺序是1->2->3->4->5->NULL,逆置后变成5->4->3->2->1->NULL;
struct asc
{ int a;
char b;
struct asc *next;
};
我写了一个,编译真确,但运行不对,请高手帮我看看,谢谢诶
struct asc *NiZhi(struct asc *l) /* l是链表的头指针*/
{
struct asc *p,*q,*m,*n,*head;
p=l;
head=l;
m=l;
p->next=n;
while(n->next!=NULL)
{
while(m->next->next!=NULL)
m=m->next;
q=m->next;
m->next=NULL;
q->next=n;
p->next=q;
p=p->next;
m=n;
}
p=head->next;
head->next=NULL;
n->next=head;
return p;
}
最好在原表上面逆置,不要建立新的表,谢谢诶

[此贴子已经被作者于2007-3-22 22:12:18编辑过]

搜索更多相关主题的帖子: 数据结构 c语言 单链 
2007-03-22 22:11
磐涅
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-11-7
收藏
得分:0 

将head(即s)后的结点(到p 也即链尾 为止),依次移到链尾排好,既逆序完成。

s->next=q->next 新增的
→→→→ |
↑ ↓ |
head →■→(■)→■ →■ →■ | →■ ...
↑ ↑ ↑ | ↑
s 将q断开 p | 新q的位置


2007-03-23 09:58
磐涅
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-11-7
收藏
得分:0 
还可以断开head,再把q依次插到head->next.

2007-03-23 10:02
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
参考一下我的.觉得你返回p可能有错误.

void convert_Node(node *head)//带头结点,相当于头插法.
{
node *pre,*p=head->next;
head->next=NULL;
while(p)
{
pre=p;
p=p->next;
pre->next=NULL;
pre->next=head->next;
head->next=pre;
}
}

倚天照海花无数,流水高山心自知。
2007-03-23 21:22
喝酸奶的鱼
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-3-8
收藏
得分:0 
以下是引用nuciewth在2007-3-23 21:22:04的发言:
参考一下我的.觉得你返回p可能有错误.

void convert_Node(node *head)//带头结点,相当于头插法.
{
node *pre,*p=head->next;
head->next=NULL;
while(p)
{
pre=p;
p=p->next;
pre->next=NULL;
pre->next=head->next;
head->next=pre;
}
}

看不明白啊


学习很重要
2007-03-24 21:06
lefttime
Rank: 1
等 级:新手上路
帖 子:162
专家分:0
注 册:2006-10-6
收藏
得分:0 
[QUOTE]
void convert_Node(node *head)//带头结点,相当于头插法.
{
node *pre,*p=head->next;
head->next=NULL;
while(p)
{
pre=p;
p=p->next;
pre->next=NULL;
pre->next=head->next;
head->next=pre;
}
}
[/QUOTE]

好方法,不过就是 pre->next=NULL在它后面一句看来可以省略

我是金子,我要闪光的
2007-03-25 18:43
wcxwxl
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2007-4-4
收藏
得分:0 

ListConverse(LinkList &L)
{
LinkList p, q, r;
p=L->next;
if(p==NULL)
return OK;
q=p->next;
p->next=NULL;

while(q!=NULL)
{
r=q->next;
q->next=p;
p=q;
q=r;
}

q->next=p;
L->next=q;
return OK;
}

2007-04-04 22:51
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
lefttime 你说的的确可以删掉,但我历来是不愿意这样做,主要是让自己理解清楚每一步的操作要导致什么样的后果.
呵呵.

倚天照海花无数,流水高山心自知。
2007-04-05 22:45
快速回复:[求助]c语言数据结构(单链表的逆置)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031105 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved