标题:[求助]链表逆向输出!
只看楼主
lucis009
Rank: 1
等 级:新手上路
帖 子:181
专家分:0
注 册:2007-5-2
 问题点数:0 回复次数:11 
[求助]链表逆向输出!
原链表:head->12->16->315->426->920->NULL

struct Addresslist *change(struct Addresslist *head)
{
struct Addresslist *p1;
struct Addresslist *p2;
p1=head;
head=head->next;
p1->next=NULL;
while(head!=NULL)
{
p2=head;
head=head->next;
p2->next=p1;
p1=p2;
}
if(head==NULL)
{
p2->next=p1;
head=p2;
}
return head;
}(这个函数是我自己编写的,一运行显示结果时就变成了死循环,请指教!或者帮忙编个也可以)
搜索更多相关主题的帖子: 链表 head next Addresslist NULL 
2007-06-14 02:51
夜火
Rank: 1
等 级:新手上路
帖 子:149
专家分:0
注 册:2007-5-30
得分:0 
没看明白你这函数 什么意思

连表 么 都是用 指针指向下一个 或者是前面的一个就可以了

不用这么麻烦

p=p->prior;

不就可以了么

2007-06-14 07:18
herbert_1987
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:1314
专家分:0
注 册:2007-5-13
得分:0 
会不会是链表尾没有指向NULL了.

人生重要的不是所站的位置,而是所朝的方向
2007-06-14 10:20
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 

去我链表帖看下.
链表反序最好是用头插法把链表重新排过.


倚天照海花无数,流水高山心自知。
2007-06-14 11:11
魔城侠客
Rank: 1
等 级:新手上路
帖 子:200
专家分:0
注 册:2006-4-4
得分:0 
可以用入栈,再出栈

West and east,home is best……
2007-06-14 11:51
lucis009
Rank: 1
等 级:新手上路
帖 子:181
专家分:0
注 册:2007-5-2
得分:0 
什么入栈出栈,不是很懂

王者你的链表在哪里啊?
2007-06-14 17:39
herbert_1987
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:1314
专家分:0
注 册:2007-5-13
得分:0 
入栈,再出栈 不错!
不过前提是要有一个栈操作程序.

人生重要的不是所站的位置,而是所朝的方向
2007-06-14 17:53
mp3aaa
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:2013
专家分:8
注 册:2006-2-15
得分:0 

现把链表的值放在数组里 然后在从数组里倒序把值取出来


羊肉串 葡萄干 哈密瓜!!
2007-06-14 18:25
k_summer7
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-3-19
得分:0 
回复:(lucis009)[求助]链表逆向输出!

我给你写了一个完整的;挺匆忙的,你测试一下,应该没有大问题,你也可以完善一下;

/*************** data define ***********/
struct List
{
int data;
struct List *next;
};
typedef struct List Node;
typedef Node *Link;

/*************** fun declare***********/
Link Create_List(void);
void Print_List(Link Head);
Link Inverse_List(Link Head);

/*********** main function ************/
int main(void)
{
Link Head;

Head = Create_List();
Print_List(Head);

Head = Inverse_List(Head);
printf("after inverse:\n");
Print_List(Head);

return 0;
}

/********** fun definition ***********/
Link Create_List(void)
{
Link Head, Point, New;

Head = (Link)malloc(sizeof(Node));
if(Head == NULL)
{
printf("Memory Allocate Failed!\n");
return Head;
}
printf("please input number,end with zero:\n");
scanf("%d",&Head->data);
if(Head->data == NULL)
{
Head = NULL;
return Head;
}
Head->next = NULL;

Point = Head;
while(1)
{
New = (Link)malloc(sizeof(Node));
scanf("%d",&New->data);
New->next = NULL;
if(New->data == NULL)
break;
Point->next = New;
Point = New;
}
return Head;
}

void Print_List(Link Head)
{
Link Point;

if(Head == NULL){
printf("the List is Empty!\n");
return;
}
Point = Head;

printf("the List Output is:\n");

while(Point != NULL)
{
printf("%d\t",Point->data);
Point = Point->next;
}
printf("\n");
return;
}

Link Inverse_List(Link Head)
{
Link Point, New, Back;

if(Head == NULL) //List is Empty
{
printf("List is Empty!\n");
return Head;
}
if(Head->next == NULL) //List is Only One Node
{
return Head;
}

Back = Head;
Point = Back->next;
New = Point->next;
Back->next = NULL;

while(Point->next != NULL)
{
Point->next = Back;
Back = Point;
Point = New;
New = New->next;
}

Point->next = Back;
Head = Point;
return Head;
}

2007-06-14 19:56
lucis009
Rank: 1
等 级:新手上路
帖 子:181
专家分:0
注 册:2007-5-2
得分:0 
谢谢
2007-06-15 00:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-147302-1-1.html




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

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