《2022年单链表的增删查改功能 .pdf》由会员分享,可在线阅读,更多相关《2022年单链表的增删查改功能 .pdf(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、- 1 - 单链表的增删查改功能的实现#include using namespace std; class LinkNode friend class List; private: int date; LinkNode *link; LinkNode(const int& d=int():date(d),link(NULL) ; class List public: void CreatList(int ); bool Insert(int i,int& x); bool Remove(int i,int& x); void PrintList(); int Find(constint& d
2、ate); int FindPos(int pos); void Update(const int &e,const int &ne); void Showmeun(); private: LinkNode *first; ;void List:CreatList( int n) LinkNode *p,*q; first=new LinkNode; first-link=NULL; p=first; for(int i=0;in;i+) cout请输入第 i+1q-date; q-link=p-link; p-link=q; p=q; bool List:Insert(int i, int
3、&x) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 6 页 - - - - - - - - - - 2 - if(first=NULL|i=0) LinkNode *newNode=new LinkNode(x); if(newNode=NULL) cerr存储分配错误! link=first;first=newNode; else LinkNode *p=first; for(int k=1;klink; if(p=NULL) cerr无效的插入位置! endl;r
4、eturn false; else LinkNode *newNode=new LinkNode(x); if(newNode=NULL) cerr 存储分配错误! link=p-link; p-link=newNode; return true; bool List:Remove(int i, int &x) LinkNode *del,*p; if(ilink; else p=first; for(int k=1;klink; if(p=NULL|p-link=NULL) cerr无效的删除位置! link; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - -
5、 - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 6 页 - - - - - - - - - - 3 - p-link=del-link; x=del-date;delete del; return true; ; void List:Showmeun() cout*链表的增删查改功能 *endl; cout 1-链表全部数据的输出 endl; cout 2-链表插入元素 endl; cout 3-链表删除元素 endl; cout 4-链表查找元素 endl; cout 5-链表数据的修改 endl; cout 0-退出endl; cout*endl
6、; cout 请输入功能序号 :endl; void List:PrintList() LinkNode *p; coutlink; while(p!=NULL) coutdatelink; coutdate=date) return k; p=p-link; return -1; int List:FindPos(int pos) if(pos1) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 6 页 - - - - - - - - - - 4 - cerr位置超出范
7、围 !link; if(p!=NULL) returnp-date; else cerr位置超出范围 !link != NULL) q = p-link; if(e = q-date) q-date = ne; continue; p = p-link; void main() List link; int n,choice,i,x,y; cout请输入链表中元素的个数,建立链表:n; link.CreatList(n); link.Showmeun(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - -
8、 - - - - 第 4 页,共 6 页 - - - - - - - - - - 5 - cinchoice; while(choice!=0) switch(choice) case 1: link.PrintList(); break; case 2: cout请输入你要插入元素的位置:i; cout请输入你要插入元素的值:x; link.Insert(i,x); break; case 3: cout请输入你要删除元素的位置:i; link.Remove(i,x); break; case 4: cout*endl; cout1-按元素的数值查找 endl; cout2-按元素的位置查找
9、 endl; cout*endl; cout请选择: x; if(x=1) cout请输入要查找的数据:x; i=link.Find(x); if(i!=-1) cout在第i个位置找到数据: xendl; else cout没有找到数据! endl; else cout请输入需要查找元素位置i; x=link.FindPos(i); cout第i 个位置的数据为: xendl; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 6 页 - - - - - - - - - - 6 - break; case 5: cout请输入原数据和更改后的数据:xy; link.Update(x,y); cout你已经成功的将 x改成了 y!endl; break; cout请输入功能序号: choice; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 6 页 - - - - - - - - -
限制150内