哈哈 猜到应该是类似的了
[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
#include<stdio.h>
#include<malloc.h>
#include<conio.h>
typedef struct Node
{
char data;
struct Node *next;
}Node,*NodePtr;
void main()
{
NodePtr head = (Node *)malloc(sizeof(Node));//头结点
NodePtr tail;//尾节点
head->next = NULL;
NodePtr p;
p = head ;
printf("*********************单链表逆置***********************\n");
/*初始化程序,建立单链表,从字母a到z的链表,有头结点*/
printf("正在初始化..\n");
for(int i=0;i<26 ;i++)
{
p->next = (Node *)malloc(sizeof(Node));
p = p->next;
p->data = 'a'+i;
}
p->next = NULL;
tail = p;
p = head;
while(p->next)
{
p=p->next;
printf("%c",p->data);
}
printf("\n任意键继续...\n");
getch();
while(head->next) //判断是否以及转置完毕
{
p=head; //初始化定位指针p的位置
while(p->next->next) //查找最后一个尚未转置的指针
p=p->next; //移动指针
p->next->next=p; //将最后的指针逆置
p->next=NULL; //添加尾部的标记
}
printf("\n逆置完成,结果如下\n");
p = tail;
while(p->next)
{
printf("%c",p->data);
p=p->next;
}
getch();
}
这是starrysky写的,其中红字好像不是注释的意思
typedef struct Node
{
char data;
struct Node *next;
}Node,*NodePtr;
我一见这种写法就蒙...
为什么蒙啊?那您就不用看那个了,直接看逆置那里吧
while(head->next) //判断是否以及转置完毕
{
p=head; //初始化定位指针p的位置
while(p->next->next) //查找最后一个尚未转置的指针
p=p->next; //移动指针
p->next->next=p; //将最后的指针逆置
p->next=NULL; //添加尾部的标记
}