| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2382 人关注过本帖
标题:[求助]原地逆置单链表
取消只看楼主 加入收藏
timebb
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-3-9
收藏
 问题点数:0 回复次数:0 
[求助]原地逆置单链表

我被这个题难住了,有没有高手可以提示一下。
具体是有一个单链表,要求只用指针,把最后的一个节点变为第一个节点,倒数第二个节点变为正数第二个节点,倒数第三各节点变为正数点三个节点………


我把这个程序写出来了但是那个逆置的循环还有一点问题,往高手解决。
附:
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int data;
struct node* next;
}node;

node *nizhi1()
{
node *head,*tail,*p,*mid,*last;
int i;
head=(node*)malloc(sizeof node);
head->next=NULL;
tail=head;
for(i=1;i<=6;i++)
{
p=(node*)malloc(sizeof node);
if(!p)
return NULL;
p->data=i;
p->next=NULL;
tail->next=p;
tail=p;
}
printf("逆置前");
tail=head->next;
while(tail!=NULL)
{
printf("%d",tail->data);
tail=tail->next;
}
printf("逆置后");
tail=head->next;
mid=tail;
last=mid;
mid=mid->next;
tail=mid->next;
while(tail!=NULL)
{
mid->next=last;
last=mid;
mid=tail;
tail=tail->next;
}
while(mid!=NULL)
{printf("-");
printf("%d",mid->data);
mid->next;
}return mid;
}

void main()
{
nizhi1();
}


后来我发现这个的错误是再逆置的时候原来的第一个节点的后一个没有赋空(原来的第一个节点逆置后变为最后一个,它的下一个应当为空),但是我不知到该怎么样解决。

[此贴子已经被作者于2006-3-27 14:30:25编辑过]

搜索更多相关主题的帖子: node 单链 节点 原地 int 
2006-03-15 13:15
快速回复:[求助]原地逆置单链表
数据加载中...
 
   



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

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