飞鸽 发表于 2013-4-5 00:33:24

【分享】链表逆置,简单易懂

#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:08

顶一个,代码写的好规范啦。算法与不错。支持楼主

飞鸽 发表于 2013-4-12 23:59:27

小亮1201 发表于 2013-4-11 17:29 static/image/common/back.gif
顶一个,代码写的好规范啦。算法与不错。支持楼主

谢谢!!{:1_1:}

黑马78 发表于 2013-4-22 01:33:24

强烈支持楼主ing……

gogo1979 发表于 2013-5-9 11:17:35

struct Node
{
      int data;
      struct Node *next;
};
Node *CreateLink() //创建链表
{
      struct Node *head,*p,*q;
}
问下楼主为什么上面的两处不加struct 也可以。

飞鸽 发表于 2013-5-10 21:35:06

那个是可以省略的

Worldmaker 发表于 2013-5-11 16:57:16

支持楼主哈!

cqk2980 发表于 2013-5-15 22:27:57

无回帖,不论坛,这才是人道。

coko 发表于 2013-7-2 18:11:13

看帖,必须回帖

xiaoxin 发表于 2013-7-2 19:23:07

谢谢楼主分享,代码好简洁

fishmo 发表于 2013-7-3 16:21:38

看看,留个脚印

coko 发表于 2013-7-3 22:08:42

看看支持下

coko 发表于 2013-7-4 12:43:57

再看看,以表支持

起什么名字 发表于 2013-9-3 15:25:54

但是没弄明白
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;是什么意思,求解

宝宝吃肉 发表于 2013-9-3 16:28:06

支持楼主            {:1_1:}
页: [1]
查看完整版本: 【分享】链表逆置,简单易懂