zoukankan      html  css  js  c++  java
  • 链表转置

    #include<stdio.h>
    #include<malloc.h>
    #include<conio.h>
    #define NULL 0
    #define OVERFLOW -2
    #define LEN sizeof(Linklist)
    typedef int Number;
    typedef struct list
    {
     Number data;
     struct list *next;
    }Linklist,*Link;
    int n;

    //创建链表
    Link creat()
    {
     Link head,p1,p2;
     head=NULL;
     n=0;
     p1=p2=malloc(LEN);
     printf("Input:\n");
     scanf("%d",&p1->data);
     while(p1->data!=0)
     {
      n++;
      if(n==1)
      {
       head=p1;
      }
      else
      {
       p2->next=p1;
      }
      p2=p1;
      p1=malloc(LEN);
      scanf("%d",&p1->data);
     }
     p2->next=NULL;
     return head;
    }
    //头插法逆转单链表
    Link Reverse(Link head)
    {
     Link p,q;   //定义两个指什p,q
     p=head;   //将头指针赋值给p
     head=NULL;   //设逆转后的链表状态为空
     while(p)    //遍历需转置的链表
     {
      q=p; //头插法将值依次插入新的表中
      p=p->next;
      q->next=head;
      head=q;
     }
     return head;
    }
    //输出链表
    void print(Link head)
    {
     Link p;
     p=head;
     printf("list node:\n");
     while(p)
     {
      printf("%d\n",p->data);
      p=p->next;
     }
     printf("the end!\n");
    }

    void main()
    {
     Link head;
     int a;
     head=creat();
     getch();
     print(head);
     printf("\nenter 1 to reverse:");
     scanf("%d",&a);
     if(a==1)
     {
      head=Reverse(head);
      print(head);
     }
     getch();
    }

  • 相关阅读:
    面经补充
    一些杂项
    leetcode整理
    缓存问题及相关解决策略
    4.10 面经补充
    合并区间(二维数组与列表的转换)
    1.4任务
    jvm虚拟机笔记<八> 线程安全与锁优化
    jvm虚拟机笔记<七> 内存模型与线程
    jvm虚拟机笔记<六> 运行期优化
  • 原文地址:https://www.cnblogs.com/calm/p/1151849.html
Copyright © 2011-2022 走看看