单链表
来源:互联网 发布:线路设计软件 编辑:程序博客网 时间:2024/06/05 07:15
/**头结点:如果没有头结点那么插入和删除就会多一种情况要处理。*/#include<iostream>using namespace std;struct node {int data;node *link;};//声明单链表头结点node *first;/**单链表的查找:查找第k个结点(可包括头结点,为第0个)*/node *find(node *first,int k) {if(!first||k<0) {return NULL;}node *temp=first;int i=0;while(temp&&i<k) {temp=temp->link;i++;}if(temp&&i==k) {return temp;}return NULL;}/**插入到第k个结点位置(k>=1)*/bool insert(node *first,int k,int data) {if(k<1) {return false;}node *node_k=find(first,k-1);if(!node_k) {return false;}node *newnode=new node();newnode->data=data;node *node_k_next=node_k->link;node_k->link=newnode;newnode->link=node_k_next;return true;}/**删除第k个结点*/bool del(node *first,int k) {node *node_temp=find(first,k);if(!node_temp){return false;}node *node_k_pre=find(first,k-1);if(!node_k_pre) {return false;}node *node_k=node_k_pre->link;if(!node_k->link) {delete node_k;//注意这里释放了node_k,node_k_pre=NULL,否则成野指针 node_k_pre->link=NULL;return true;}node *node_k_next=node_k->link;node_k_pre->link=node_k_next;delete node_k;return true;}int main() {first=new node();bool i1=insert(first,1,1);bool i2=insert(first,1,2);bool i3=insert(first,4,3);for(int i=1; i<=3; i++) {node *temp=find(first,i);if(temp) {printf("data%d=%d\n",i,temp->data);}}printf(".......................................");del(first,1);del(first,1);del(first,1);for(int i=1; i<=3; i++) {node *temp=find(first,i);if(temp) {printf("data%d=%d\n",i,temp->data);}}return 0;}
阅读全文
0 0
- 单链表
- 单链表
- 单链表
- 单链表
- 单链表
- 单链表
- 单链表
- 单链表
- 单链表
- 单链表
- 单链表
- 单链表
- 单链表
- 单链表
- 单链表
- 单链表
- 单链表
- 单链表
- Fedora 26里面的dnf故障
- uurlib.riquest获取网页编码
- ubuntu 16.04 阿里云更新源
- ZooKeeper(2)配置伪分布模式
- Tomcat8.0最简单的详细配置
- 单链表
- 彻底理解ldpi、mdpi、hdpi、xhdpi、xxhdpi
- VIM安装
- poj3268 Silver Cow Party【最短路】
- 使用vuejs实现简单的图书增加删除功能
- mysql命令什么时候带table关键字, 什么时候不带table关键字呢?
- XDOJ 1107
- 手动设置Windows 7的开关机、锁屏登陆界面壁纸
- ucos-iii学习之软件定时器管理