我被这个题难住了,有没有高手可以提示一下。
具体是有一个单链表,要求只用指针,把最后的一个节点变为第一个节点,倒数第二个节点变为正数第二个节点,倒数第三各节点变为正数点三个节点………
我把这个程序写出来了但是那个逆置的循环还有一点问题,往高手解决。
附:
#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编辑过]