1. #include <stdio.h>
  2. #define END_elem 0
  3. struct node
  4. {
  5. int date;
  6. struct node * next;
  7. };
  8. //链表创建
  9. node * creat()
  10. {
  11. int x;
  12.     node *head,*last,*p;
  13.     head=new node();
  14.     last=head;
  15. scanf("%d",&x);
  16. while(x!=END_elem)
  17. {
  18.         p=new node();
  19.         p->date=x;
  20.         last->next=p;
  21.         last=p;
  22. scanf("%d",&x);
  23. }
  24.     head=head->next;
  25.     last->next=NULL;
  26. return head;
  27. }
  28. //单链表测长
  29. int lenght(node *head)
  30. {
  31. int n=0;
  32.     node *p=head;
  33. while(p!=NULL)
  34. {
  35.         p=p->next;
  36.         n++;
  37. }
  38. return n;
  39. }
  40. //链表排序
  41. node *sort(node *head,int n)
  42. {
  43. int temp;
  44.     node *p;
  45. if(head==NULL||head->next==NULL)
  46. return head;
  47. for(int i=0;i<n-1;i++)
  48. {
  49.         p=head;
  50. for(int j=0;j<n-1-i;j++)
  51. {
  52. if(p->date>p->next->date)
  53. {
  54.                 temp=p->date;
  55.                 p->date=p->next->date;
  56.                 p->next->date=temp;
  57. }
  58.             p=p->next;
  59. }
  60. }
  61. return head;
  62. }
  63. //链表插入
  64. node * insert(node *head,int num)
  65. {
  66.     node *p,*q,*t;
  67.     p=head;
  68.     t=new node();
  69.     t->date=num;
  70. while(num>p->date&&p->next!=NULL)
  71. {
  72.         q=p;
  73.         p=p->next;
  74. }
  75. if(num<=p->date)
  76. {
  77. if(p==head)
  78. {
  79.             t->next=p;
  80.             head=t;
  81. }
  82. else
  83. {
  84.             t->next=p;
  85.             q->next=t;
  86. }
  87. }
  88. else//把插入点定在表尾
  89. {
  90.         p->next=t;
  91.         t->next=NULL;
  92. }
  93. return head;
  94. }
  95. //链表输出
  96. void print(node *head)
  97. {
  98. struct node *p=head;
  99. while(p!=NULL)
  100. {
  101. printf("%d\n",p->date);
  102.         p=p->next;
  103. }
  104. }
  105. //链表删除
  106. node *del(node *head,int num)
  107. {
  108.     node *p,*q;
  109.     p=head;
  110. while(num!=p->date&&p->next!=NULL)
  111. {
  112.         q=p;
  113.         p=p->next;
  114. }
  115. if(p->date==num)
  116. {
  117. if(p==head)
  118. {
  119.             head=p->next;
  120.             delete p;
  121. }
  122. else
  123. {
  124.             q->next=p->next;
  125.             delete p;
  126. }
  127. }
  128. else
  129. printf("Didn't Fond The Num!");
  130. return head;
  131. }
  132. //链表逆序
  133. node *reverse(node *head)
  134. {
  135.     node *p1,*p2,*p3;
  136.     p1=head;
  137.     p2=head->next;
  138. while(p2)
  139. {
  140.         p3=p2->next;
  141.         p2->next=p1;
  142.         p1=p2;
  143.         p2=p3;
  144. }
  145.     head->next=NULL;
  146.     head=p1;
  147. return head;
  148. }
  149. void main()
  150. {
  151. struct node *head;
  152. int n,m;
  153. printf("链表创建,输入数字:\n");
  154.     head=creat();
  155.     print(head);
  156.     n=lenght(head);
  157. printf("链表的长度为 %d\n",n);
  158. printf("链表排序:\n");
  159.     head=sort(head,n);
  160.     print(head);
  161. printf("输入要插入链表的数:\n");
  162. scanf("%d",&m);
  163. printf("插入后的链表:\n");
  164.     head=insert(head,m);
  165.     print(head);
  166. printf("链表逆序:\n");
  167.     head=reverse(head);
  168.     print(head);
  169. }

链表的创建、测长、排序、插入、逆序的实现(C语言)的更多相关文章

  1. 将单链表的每K个节点之间逆序

    [说明]: 本文是左程云老师所著的<程序员面试代码指南>第二章中“将单链表的每K个节点之间逆序”这一题目的C++复现. 本文只包含问题描述.C++代码的实现以及简单的思路,不包含解析说明, ...

  2. 【链表问题】打卡9:将单链表的每K个节点之间逆序

    前言 以专题的形式更新刷题贴,欢迎跟我一起学习刷题,相信我,你的坚持,绝对会有意想不到的收获.每道题会提供简单的解答,如果你有更优雅的做法,欢迎提供指点,谢谢. 注:如果代码排版出现了问题麻烦通知我下 ...

  3. 栈和队列----将单链表的每K个节点之间逆序

    将单链表的每K个节点之间逆序 给定一个单链表的头节点head,实现一个调整链表的函数,使得每K 个节点之间逆序,如果最后剩下不够K 个节点,则不调整最后几个. 例如: 链表:1—>2—>3 ...

  4. 左神算法书籍《程序员代码面试指南》——2_11将单链表的每K个节点之间逆序

    [题目]给定一个单链表的头节点head,实现一个调整单链表的函数,使得每K个节点之间逆序,如果最后不够K个节点一组,则不调整最后几个节点.例如:链表:1->2->3->4->5 ...

  5. [算法] 将单链表的每K个节点之间逆序

    题目 给定一个单链表的头结点,实现一个调整单链表的函数,使得每K个节点之间逆序,如果最后不够K个节点一组,则不调整最后几个节点. 解答 使用栈结构 import java.util.Stack; pu ...

  6. 算法总结之 将单链表的每K个节点之间逆序

    给定一个单链表的表头节点head,实现一个调整单链表的函数,是的每k个节点之间逆序,如果最后不够k个节点一组,则不调整最后几个节点 思路: 如果k的值小于2,不调整.k<1 没有意义,k==1代 ...

  7. [程序员代码面试指南]链表问题-将单链表的每k个节点之间逆序

    题目描述 给定一个单链表的表头节点head,实现一个调整单链表的函数,是的每k个节点之间逆序,如果最后不够k个节点一组,则不调整最后几个节点. 题解 内部函数reverse实现链表beg到end的翻转 ...

  8. 使用OC实现单链表:创建、删除、插入、查询、遍历、反转、合并、判断相交、求成环入口

    一.概念 链表和数组都是一种线性结构,数组有序存储的,链表是无序存储的. 数组中的每一个元素地址是递增或者递减的关系,链表的每一个节点的地址没有此规律,它们是通过指针的指向连接起来. 链表种类:单链表 ...

  9. Linux C++ 单链表添加,删除,输出,逆序操作

    /*单链表操作*/#include <iostream>using namespace std; class Node{ public: Node(){ next=0; } Node(in ...

  10. 链表逆序(JAVA实现)

    题目:将一个有链表头的单向单链表逆序 分析: 链表为空或只有一个元素直接返回: 设置两个前后相邻的指针p,q,使得p指向的节点为q指向的节点的后继: 重复步骤2,直到q为空: 调整链表头和链表尾: 图 ...

随机推荐

  1. linux文件操作命令--转

    引用地址:http://bbsunchen.iteye.com/blog/1010993 想自己一开始处理文件的时候,看文件有多少行,都要写个perl脚本,好不麻烦啊...以此文纪念自己傻逼的科研生活 ...

  2. C#.NET使用AnimateWindow制作淡入淡出特殊效果的窗体

    使用AnimateWindow制作淡入淡出效果的窗体 命名空间: using System.Runtime.InteropServices; API函数: [DllImport("user3 ...

  3. 神马小说:使用opensearch打造高性能搜索服务

    神马小说--- 使用opensearch打造高性能搜索服务 [使用背景] 神马小说是最早使用opensearch的用户,和opensearch一起成长.目前神马小说每天2亿搜索pv,1000w 用户. ...

  4. Flume Spooldir 源的一些问题

    Flume Spooldir 源的一些问题 来自:http://blog.xlvector.net/2014-01/flume-spooldir-source-problem/ ( 自己写的插件,数据 ...

  5. 剑指Offer15 合并两个已排序链表

    /************************************************************************* > File Name: 15_MergeT ...

  6. Linux 内核模块可选信号

    一 . 内核模块可选信号 1 . 模块申明 (1). MODULE_LICENSE(遵守的协议) 申明该模块遵守的许可证协议,如:“GPL”."GPL V2" (2). MODUL ...

  7. Smart法则

    设立目标不是一个很简单的事情.人们经常会犯一些基本的错误,即过于理想化.不符合客观情况.不容易执行落实,因此计划容易变成一种“美好的愿望”而已.在20世纪70年代,一位美国人为设立目标做出了一个简单而 ...

  8. asp.net EF model中的默认值设置

    在做数据库规划时,通常会规划一些系统字段,也就是由数据库本身自行指定默认值到这个字段上,创建新的“创建时间(CreateDate)”字段就会常常这样设计. 如果希望能有默认值,且让.net 程序在新增 ...

  9. Nginx服务器不支持PATH_INFO的问题及解决办法

    最近在写一个小程序,然后里面自己写了个URL的处理器,比如说访问index.php/article 那么就会自动加载进来article页面,访问index.php/home就会自动加载home页面. ...

  10. 详细js中(function(window,document,undefined))的作用

    在jquery插件中我们经常看到以下这段代码 对于很多初学者来说很难明白这表示什么,下边我将为大家介绍其相应的作用. 1.代码最前面的分号,可以防止多个文件压缩合并以为其他文件最后一行语句没加分号,而 ...