【分享】链表逆置,简单易懂
#include <stdio.h>#include <stdlib.h>
struct Node
{
int data;
Node *next;
};
Node *CreateLink() //创建链表
{
Node *head,*p,*q;
int Data;
head=p=q=(Node *)malloc(sizeof(Node));
printf("请输入数据\n");
scanf("%d",&Data);
while(Data>0)
{
q=(Node *)malloc(sizeof(Node));
q->data=Data;
p->next=q;
p=q;
printf("请输入数据\n");
scanf("%d",&Data);
}
p->next=NULL;
return head;
}
void PrintLink(Node *h)//输出链表
{
Node *p;
p=h->next;
while(p!=NULL)
{
printf("%-3d",p->data);
p=p->next;
}
printf("\n");
}
Node *InvertLink(Node *h)//链表的逆置
{
Node *p,*q;
p=h->next;
h->next=NULL;
while(p!=NULL)
{
q=p->next;
p->next=h->next;
h->next=p;
p=q;
}
return h;
}
void main()
{
Node *h;
h=CreateLink();
PrintLink(h);
printf("链表的逆置如下:\n");
h=InvertLink(h);
PrintLink(h);
}
顶一个,代码写的好规范啦。算法与不错。支持楼主 小亮1201 发表于 2013-4-11 17:29 static/image/common/back.gif
顶一个,代码写的好规范啦。算法与不错。支持楼主
谢谢!!{:1_1:} 强烈支持楼主ing…… struct Node
{
int data;
struct Node *next;
};
Node *CreateLink() //创建链表
{
struct Node *head,*p,*q;
}
问下楼主为什么上面的两处不加struct 也可以。
那个是可以省略的 支持楼主哈! 无回帖,不论坛,这才是人道。 看帖,必须回帖 谢谢楼主分享,代码好简洁 看看,留个脚印 看看支持下 再看看,以表支持 但是没弄明白
Node *InvertLink(Node *h)//链表的逆置
{
Node *p,*q;
p=h->next;
h->next=NULL;
while(p!=NULL)
{
q=p->next;
p->next=h->next;
h->next=p;
p=q;
}
中,p->next=h->next;是什么意思,求解 支持楼主 {:1_1:}
页:
[1]