程序员面试宝典——数据结构之单链表
单链表创建--------->单链表长度--------->单链表删除-------->单链表插入-------->单链表排序--------->单链表逆置
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
程序员面试宝典——数据结构之单链表相关推荐
- 程序员面试宝典(第4版)
<程序员面试宝典(第4版)> 基本信息 作者: 欧立奇 刘洋 段韬 出版社:电子工业出版社 ISBN:9787121207242 上架时间:2013-7-8 出版日期:2013 年7月 开 ...
- 《程序员面试宝典3》大量错误(50+)纠正表
本文转自:http://blog.csdn.net/hilyoo/article/details/4466680 <程序员面试宝典>第3版大量错误纠正表 以前随手翻了翻,想写这篇文章没有写 ...
- java只会用不知道原理6_程序员面试宝典之14道初级Java面试题分享
程序员面试宝典之14道初级Java面试题分享 程序员面试宝典之14道初级Java面试题分享! 关于赢在面试的Java题系列基本收集整理完成了,所有题目都是经过精心挑选的,很基础又考验求职者的基本功,应 ...
- ASP.NET的几个试题(《C#与.NET程序员面试宝典》)
更多参考:博客园笔记 面试题1:ASP.NET是什么 ASP.NET不是一种语言,而是创建动态Web页的一种强大的服务器端技术,它是Microsoft.NET Framework中一套用于生成Web应 ...
- 程序员面试宝典笔记1-基本概念预处理,const与sizeof
程序员面试宝典笔记1-基本概念&预处理,const与sizeof 基本概念 赋值语句: i++: 类型转换 运算符问题 a,b交换与比较 其他 预处理 const sizeof 基本概念 赋值 ...
- Java程序员面试宝典笔记记录(1~3章概括)
文章目录 导言 求职前重要的两点 求职者注意的几个方面: 挑选offer考虑5点 后台开发人员面试需要补充和阅览的书籍 需备技能方面 需要阅读的书籍(针对Java) 结语 导言 本博文是对于何昊出 ...
- Java程序员面试宝典
第1部分 求职过程 古人云:凡事预则立,不预则废.机会都是垂青有准备的人的.为了得到一份满意的工作,大家一定要对整个求职过程有清醒的了解.把能够预见的.必须做的事情早一些做完,这样在大规模招聘开始的 ...
- 《程序员面试宝典》精华 底层部分
<程序员面试宝典>精华 底层部分 正所谓取其精华,去其糟粕.本文谨记录下<程序员面试宝典>一些关键的知识点.易错点,对于一些虽然重要但书中没有解释清楚的地方不做记录.书里是没有 ...
- 《程序员面试宝典》精华 面向对象部分
<程序员面试宝典>精华 面向对象部分 正所谓取其精华,去其糟粕.本文谨记录下<程序员面试宝典>一些关键的知识点.易错点,对于一些虽然重要但书中没有解释清楚的地方不做记录.书里是 ...
- 《程序员面试宝典》精华 编程语言部分
<程序员面试宝典>精华 编程语言部分 正所谓取其精华,去其糟粕.本文谨记录下<程序员面试宝典>一些关键的知识点.易错点,对于一些虽然重要但书中没有解释清楚的地方不做记录.当然这 ...
最新文章
- 《深入浅出Ext JS》改版意见有奖征集活动!
- 网络表述学习经典论文——DeepWalk
- 脑机接口创造“第六感”:激活特定神经元,大鼠训练出新感官,逃出水迷宫,像用视觉一样轻松...
- Redis 主从复制
- iOS之深入解析bitcode的功能与应用
- zookeeper一键启动关闭JAVA_HOME在PATH中找不到报错踩坑记
- 计算机应用基础教程2015答案,《计算机应用基础教程(2015版)》_课后题答案.doc
- JavaScript学习总结(4)——JavaScript数组
- android udt协议,接口和软件包 | Android 开源项目 | Android Open Source Project
- CCF NOI1039 2的n次方
- 调整home和根分区大小
- 在webconfig中写好连接后,在程序中如何调用?
- 1.3寸OLED 12864 sh1106带中文字库液晶屏介绍
- 树莓派 or 香橙派 部署c# .net 并设置开机启动
- 微信小程序如何获取地理位置、地图显示,逆地址解析。
- VUE搭建云音乐播放器(App版本)
- Linux账户标识R=400是什么意思_linux后台开发具备能力集锦
- CheckBox属性
- 高精度加法竖式模拟器
- p元素嵌套块级元素失效问题
热门文章
- 游戏服务器的思考之三:谈谈MVC
- BootStrap FileInput 插件实现多文件上传前端功能
- UVA - 11437
- MySQL Study之--MySQL schema_information数据库
- 知识、经验的漏洞还有很多很多
- [转]亿万富翁对大学生的18句话
- 最佳牛围栏题解 二分答案
- 034. asp.netWeb用户控件之三通过用户控件实现用户注册和登录
- Emulator Error: Could not load OpenGLES emulation library: Could not load DLL!
- 【Prims】--【telerik】DataGridView 控件