单链表的基本操作-数据结构
来源:互联网 发布:淘宝客服数据在哪看 编辑:程序博客网 时间:2024/06/05 02:38
单链表的基本操作
1.单链表的建立:包括头插法和尾插法
Linklist HeadCreatLink()
Linklist TailCreatLink()
2.获取第n个元素
Statue GetElem(Linklist L,Statue n)3.获取元素在链表中的第一个位置
Statue FindElem(Linklist L,Elemtype key)
4.在第n个位置插入元素
Statue InsertElem(Linklist &L,Elemtype key,Statue n)5.删除第一个元素e
Statue DeleteElem(Linklist &L,Elemtype key)6.合并两个单链表
Linklist MergeLink(Linklist L1,Linklist L2)
完整代码:
#include<iostream>#include<cstring>using namespace std;typedef int Statue;typedef int Elemtype;typedef struct Node{Elemtype data;struct Node *next;}*Linklist,Node;Linklist HeadCreatLink(){Elemtype e;Linklist p,L;L=new Node;L->next=NULL;while(true){cin>>e;if(e==-1) break;p=new Node;p->data=e;p->next=L->next;L->next=p;}return L;}Linklist TailCreatLink(){Elemtype e;Linklist L,p,q;p=L=new Node;L->next=NULL;while(true){cin>>e;if(e==-1) break;q=new Node;q->data=e;p->next=q;q->next=NULL;p=q;}return L;}Statue GetElem(Linklist L,Statue n){int i=1;Linklist p;p=L->next;while(i<n && p!=NULL){p=p->next;i++;}if(i!=n) return -1;else return p->data;}Statue FindElem(Linklist L,Elemtype key){ Linklist p; Statue i; i=0; p=L->next; while(p!=NULL) { i++; if(p->data==key) return i; p=p->next; } return 0;}Statue InsertElem(Linklist &L,Elemtype key,Statue n){ Statue i; Linklist p,pre; pre=L; i=1; while(i<n && pre->next!=NULL) { pre=pre->next; i++; } if(pre->next==NULL) return 0; //Insert wrong position p= new Node; p->data=key; p->next=pre->next; pre->next=p; return 1;}Statue DeleteElem(Linklist &L,Elemtype key) //Delete the first such elem{ Linklist p,pre; pre=L; p=L->next; while(p!=NULL && p->data!=key) { p=p->next; pre=pre->next; } if(p==NULL) return 0; //NO such elem pre->next=p->next; delete p; return 1;}Linklist MergeLink(Linklist L1,Linklist L2){ Linklist p,q,r,L; r=L=new Node; p=L1->next,q=L2->next; while(p!=NULL && q!=NULL) { if(p->data>=q->data) { r->next=p; r=p; p=p->next; } else { r->next=q; r=q; q=q->next; } } while(p!=NULL) { r->next=p; r=p; p=p->next; } while(q!=NULL) { r->next=q; r=q; q=q->next; } return L;}int main(){Linklist Link1,Link2,p,Linkmerge;Statue i,t;Elemtype e;//Head insert creat linkLink1=HeadCreatLink();for(p=Link1->next;p!=NULL;p=p->next)cout<<p->data<<" ";cout<<endl;//Tail insert creat linkLink2=TailCreatLink();for(p=Link2->next;p!=NULL;p=p->next)cout<<p->data<<" ";cout<<endl;//Find ith numcout<<"Get ith elem:"<<endl;cin>>i;e=GetElem(Link2,i);if(e==-1) cout<<"No Find!"<<endl;else cout<<e<<endl;//Find elemcout<<"Input elem you want to find:";cin>>e;t=FindElem(Link2,e);if(t) cout<<"The elem position:"<<t<<endl;else cout<<"No this elem."<<endl; //Insert elem cout<<"Input insert elem and the position:"<<endl; cin>>e>>i; t=InsertElem(Link2,e,i); if(t) { for(p=Link2->next;p!=NULL;p=p->next) cout<<p->data<<" "; cout<<endl; } else cout<<"Inset wrong position!"<<endl; cout<<"Input elem you want to delete:"; cin>>e; t=DeleteElem(Link2,e); if(t) { for(p=Link2->next;p!=NULL;p=p->next) cout<<p->data<<" "; cout<<endl; } else cout<<"No such elem!"<<endl; cout<<"Merge Link1 and Link2:"<<endl; Linkmerge=MergeLink(Link1,Link2); for(p=Linkmerge->next;p!=NULL;p=p->next) cout<<p->data<<" "; cout<<endl;return 0;}
0 0
- 单链表的基本操作-数据结构
- 【数据结构】单链表的基本操作
- 【数据结构】单链表的基本操作
- 数据结构--单链表的基本操作
- 数据结构-单链表的基本操作
- 数据结构--单链表基本操作
- 数据结构——单链表的基本操作
- 数据结构——单链表的基本操作
- 【C++/数据结构】单链表的基本操作
- 严蔚敏数据结构单链表的所有基本操作
- 数据结构实验报告单链表的基本操作
- 数据结构——单链表的基本操作
- 数据结构查找之-单链表的基本操作
- 数据结构之单链表的基本操作
- 数据结构队列的基本操作
- 数据结构:字符串的基本操作
- 数据结构 队列的基本操作
- 【数据结构】 栈的基本操作
- 贪心法
- 动态规划
- 一句话Design Pattern:Bridge
- LeetCode趣题
- 资源收藏贴
- 单链表的基本操作-数据结构
- 小马哥----高仿小米note主板H79 型号 刷机拆机主板图与开机界面图 新版机型 警惕
- webdriver cookie 处理 selenium_python
- webservice的简单理解
- leetcode笔记:Single Number
- 只含0、1的串进行排序,可任意交换位置,最小交换次数
- C++ STL set::find是如何判断两个元素相等的
- vim常用配置
- CSS知识点总结2