单链表创建--------->单链表长度--------->单链表删除-------->单链表插入-------->单链表排序--------->单链表逆置

  1 #include<iostream>
  2 #include<stdio.h>
  3 #include<string.h>
  4 #include<stdlib.h>
  5 //#include<conio.h>
  6 using namespace std;
  7 class Node
  8 {
  9 public:
 10     int data;
 11     Node* next;
 12 };
 13 Node* create()
 14 {
 15     Node* head,*p,*s;
 16     int x,cycle=1;
 17     head=(Node*)new Node;
 18     p=head;
 19     while(cycle)
 20     {
 21      printf("\nplease input the data:");
 22      scanf("%d",&x);
 23      if(x!=0){
 24      s=(Node*)new Node;
 25       s->data=x;
 26     // printf("\n%d",s->data);
 27      p->next=s;
 28      p=s;
 29      }
 30      else cycle=0;
 31     }
 32     head=head->next;
 33     p->next=NULL;
 34     printf("\nhead data is: %d\n",head->data);
 35     return (head);
 36 }
 37
 38 Node*  Delete(Node* head,int num)
 39 {
 40     Node* p1,*p2;
 41     p1=head;
 42     while(num!=p1->data&&p1->next!=NULL)
 43     {
 44         p2=p1;//前一个node
 45         p1=p1->next;
 46     }
 47     if(num==p1->data)
 48     {
 49         if(p1==head)
 50         {
 51             head=p1->next;
 52             delete p1;
 53         }
 54         else{
 55         p2->next=p1->next;
 56         delete p1;
 57         }
 58     }
 59     else
 60     printf("\n%d could not been found ",num);
 61     return (head);
 62 }
 63
 64 int length(Node *head)
 65 {
 66     int n=0;
 67     Node* p;
 68     p=head;
 69     while(p!=NULL){
 70     p=p->next;
 71     n++;
 72     }
 73     return (n);
 74 }
 75
 76 void print(Node* head)
 77 {
 78     Node*p;
 79     p=head;
 80     while(p!=NULL){
 81     printf("%d->",p->data);
 82     p=p->next;
 83     }
 84     printf("\n");
 85 }
 86
 87 Node* insert(Node* head,int num)
 88 {
 89     Node* p0,*p1,*p2;
 90     p1=head;
 91     p0=(Node*) new Node;
 92     p0->data=num;
 93     while(p0->data>p1->data&&p1->next!=NULL)
 94     {
 95         p2=p1;
 96         p1=p1->next;
 97     }
 98     if(p0->data<=p1->data)
 99     {
100         if(head==p1)
101         {
102             p0->next==p1;
103             head=p0;
104         }
105         else
106         {
107             p2->next=p0;
108             p0->next=p1;
109         }
110     }
111     else
112     {
113         p1->next=p0;
114         p0->next=NULL;
115     }
116     return (head);
117 }
118
119 Node* sort(Node* head)
120 {
121     Node*p,*p2,*p3;
122     int n;
123     int temp;
124     n=length(head);
125     if(head==NULL||head->next==NULL)
126         return head;
127     p=head;
128     for(int j=1;j<n;j++){
129     p=head;
130     for(int i=0;i<n-j;++i){
131     if(p->data>p->next->data){
132     temp=p->data;
133     p->data=p->next->data;
134     p->next->data=temp;
135     }
136     p=p->next;
137     }
138     }
139     return head;
140 }
141
142 Node* reverse(Node* head)
143 {
144     Node *p1,*p2,*p3;
145     if(head==NULL||head->next==NULL)
146         return head;
147     p1=head;
148     p2=p1->next;
149     while(p2)
150     {
151         p3=p2->next;
152         p2->next=p1;
153         p1=p2;
154         p2=p3;
155     }
156
157     head->next=NULL;
158     head=p1;
159     return head;
160 }
161
162 int main()
163 {
164     Node *head=create();
165     printf("\nlist length is:%d\n",length(head));
166     printf("********list data is*************\n");
167     print(head);
168     head=Delete(head,4);
169     printf("\nafter delete list length is %d\n",length(head));
170     printf("********list data is************\n");
171     print(head);
172     cout<<"************INSERT*****************"<<endl;
173     head=insert(head,888);
174     cout<<"after insert list length is "<<length(head)<<endl;
175     cout<<"**********list data is***********"<<endl;
176     print(head);
177     cout<<"**********SORT****************"<<endl;
178     head=sort(head);
179     print(head);
180     cout<<"**********REVERSE*******************"<<endl;
181     head=reverse(head);
182     print(head);
183     return 0;
184 }

转载于:https://www.cnblogs.com/BasilLee/p/3870487.html

程序员面试宝典——数据结构之单链表相关推荐

  1. 程序员面试宝典(第4版)

    <程序员面试宝典(第4版)> 基本信息 作者: 欧立奇 刘洋 段韬 出版社:电子工业出版社 ISBN:9787121207242 上架时间:2013-7-8 出版日期:2013 年7月 开 ...

  2. 《程序员面试宝典3》大量错误(50+)纠正表

    本文转自:http://blog.csdn.net/hilyoo/article/details/4466680 <程序员面试宝典>第3版大量错误纠正表 以前随手翻了翻,想写这篇文章没有写 ...

  3. java只会用不知道原理6_程序员面试宝典之14道初级Java面试题分享

    程序员面试宝典之14道初级Java面试题分享 程序员面试宝典之14道初级Java面试题分享! 关于赢在面试的Java题系列基本收集整理完成了,所有题目都是经过精心挑选的,很基础又考验求职者的基本功,应 ...

  4. ASP.NET的几个试题(《C#与.NET程序员面试宝典》)

    更多参考:博客园笔记 面试题1:ASP.NET是什么 ASP.NET不是一种语言,而是创建动态Web页的一种强大的服务器端技术,它是Microsoft.NET Framework中一套用于生成Web应 ...

  5. 程序员面试宝典笔记1-基本概念预处理,const与sizeof

    程序员面试宝典笔记1-基本概念&预处理,const与sizeof 基本概念 赋值语句: i++: 类型转换 运算符问题 a,b交换与比较 其他 预处理 const sizeof 基本概念 赋值 ...

  6. Java程序员面试宝典笔记记录(1~3章概括)

    文章目录 导言 求职前重要的两点 求职者注意的几个方面: 挑选offer考虑5点 后台开发人员面试需要补充和阅览的书籍 需备技能方面 需要阅读的书籍(针对Java) 结语 导言   本博文是对于何昊出 ...

  7. Java程序员面试宝典

    第1部分  求职过程 古人云:凡事预则立,不预则废.机会都是垂青有准备的人的.为了得到一份满意的工作,大家一定要对整个求职过程有清醒的了解.把能够预见的.必须做的事情早一些做完,这样在大规模招聘开始的 ...

  8. 《程序员面试宝典》精华 底层部分

    <程序员面试宝典>精华 底层部分 正所谓取其精华,去其糟粕.本文谨记录下<程序员面试宝典>一些关键的知识点.易错点,对于一些虽然重要但书中没有解释清楚的地方不做记录.书里是没有 ...

  9. 《程序员面试宝典》精华 面向对象部分

    <程序员面试宝典>精华 面向对象部分 正所谓取其精华,去其糟粕.本文谨记录下<程序员面试宝典>一些关键的知识点.易错点,对于一些虽然重要但书中没有解释清楚的地方不做记录.书里是 ...

  10. 《程序员面试宝典》精华 编程语言部分

    <程序员面试宝典>精华 编程语言部分 正所谓取其精华,去其糟粕.本文谨记录下<程序员面试宝典>一些关键的知识点.易错点,对于一些虽然重要但书中没有解释清楚的地方不做记录.当然这 ...

最新文章

  1. 《深入浅出Ext JS》改版意见有奖征集活动!
  2. 网络表述学习经典论文——DeepWalk
  3. 脑机接口创造“第六感”:激活特定神经元,大鼠训练出新感官,逃出水迷宫,像用视觉一样轻松...
  4. Redis 主从复制
  5. iOS之深入解析bitcode的功能与应用
  6. zookeeper一键启动关闭JAVA_HOME在PATH中找不到报错踩坑记
  7. 计算机应用基础教程2015答案,《计算机应用基础教程(2015版)》_课后题答案.doc
  8. JavaScript学习总结(4)——JavaScript数组
  9. android udt协议,接口和软件包  |  Android 开源项目  |  Android Open Source Project
  10. CCF NOI1039 2的n次方
  11. 调整home和根分区大小
  12. 在webconfig中写好连接后,在程序中如何调用?
  13. 1.3寸OLED 12864 sh1106带中文字库液晶屏介绍
  14. 树莓派 or 香橙派 部署c# .net 并设置开机启动
  15. 微信小程序如何获取地理位置、地图显示,逆地址解析。
  16. VUE搭建云音乐播放器(App版本)
  17. Linux账户标识R=400是什么意思_linux后台开发具备能力集锦
  18. CheckBox属性
  19. 高精度加法竖式模拟器
  20. p元素嵌套块级元素失效问题

热门文章

  1. 游戏服务器的思考之三:谈谈MVC
  2. BootStrap FileInput 插件实现多文件上传前端功能
  3. UVA - 11437
  4. MySQL Study之--MySQL schema_information数据库
  5. 知识、经验的漏洞还有很多很多
  6. [转]亿万富翁对大学生的18句话
  7. 最佳牛围栏题解 二分答案
  8. 034. asp.netWeb用户控件之三通过用户控件实现用户注册和登录
  9. Emulator Error: Could not load OpenGLES emulation library: Could not load DLL!
  10. 【Prims】--【telerik】DataGridView 控件