zoukankan      html  css  js  c++  java
  • 链表反转,只用两次头插法就实现了 hello

      1 #include<stdio.h>
      2 #include<stdlib.h>
      3 
      4 typedef struct Node{
      5     int data;
      6     struct Node *next;
      7 }Link;
      8 
      9 void add(Link * Head);
     10 void print(Link * Head);
     11 Link* reverse(Link * Head);
     12 
     13 int main()
     14 {
     15     Link *Head = (Link *)malloc(sizeof(Link));
     16     Head->next = NULL;
     17     printf("请输入节点的值,输入-1表示结束\n");
     18     add(Head) ;
     19     print(Head);
     20     Head=reverse(Head);
     21 
     22     print(Head);
     23 
     24         getchar();
     25     return 0;
     26 }
     27 void add(Link * Head)
     28 {
     29     int data;
     30     while(~scanf("%d", &data))
     31     {
     32         if(data == -1) break;
     33         Link *L =  (Link *)malloc(sizeof(Link));
     34         L->data = data;
     35         if(Head->next == NULL)
     36         {
     37             L->next = NULL;
     38             Head->next = L;
     39         }
     40         else
     41         {
     42             L->next = Head->next;
     43             Head->next = L;
     44         }
     45 
     46     }
     47 }
     48 
     49 void print(Link *Head)
     50 {
     51     Link *p =  (Link *)malloc(sizeof(Link));
     52     p = Head;
     53     while(p->next != NULL)
     54     {
     55 
     56         printf("%d, ", p->next->data);
     57         p = p->next;
     58     }
     59     p = NULL;
     60     free(p);
     61     printf("\n");
     62 }
     63 
     64 Link* reverse(Link * Head)
     65 {
     66     Link * NewHead = (Link *)malloc(sizeof(Link));
     67     NewHead->next = NULL;
     68     Link *p =  (Link *)malloc(sizeof(Link));
     69     p = Head;
     70     while(p->next != NULL)
     71     {
     72         Link *L =  (Link *)malloc(sizeof(Link));
     73         L->data = p->next->data;
     74         if(NewHead->next == NULL)
     75         {
     76             L->next = NULL;
     77             NewHead->next = L;
     78         }
     79         else
     80         {
     81             L->next = NewHead->next;
     82             NewHead->next = L;
     83         }
     84 
     85         p = p->next;
     86     }
     87         p = Head->next;
     88         Link *p1 =  (Link *)malloc(sizeof(Link));
     89         p1 = Head->next;
     90         while(p1->next != NULL)
     91         {
     92             p1 = p1->next;
     93             free(p);
     94             p = p1 ;
     95         }
     96         Head = NewHead;
     97         NewHead = NULL;
     98         free(NewHead);
     99         free(p1);
    100         p1 = NULL;
    101         p = NULL;
    102 
    103         return Head;
    104 }
  • 相关阅读:
    关于组件(包括控件)设计的一些建议
    请教:不能运行asp程序了??
    (ASP.NET)几个概念与区别
    突然想起99年的那次离别
    什么是计划
    服务器控件开发基础应用设计期Attribute
    收藏些API资料
    今天的感觉呐喊
    重新启用本blog
    关于Clone
  • 原文地址:https://www.cnblogs.com/fightever/p/4070038.html
Copyright © 2011-2022 走看看