数据结构 - 简单的单链表结构
来源:互联网 发布:天庭淘宝店无常 编辑:程序博客网 时间:2024/05/29 13:40
编写一个程序exp2-2.cpp,实现单链表的各种基本运算(假设单链表的元素类型为char),并在此基础上完成如下功能:
(1)初始化单链表h;
(2)采用尾插法依次插入元素a,b,c,d,e;
(3)输出单链表h;
(4)输出单链表h长度;
(5)判断单链表h是否为空;
(6)输出单链表h的第3个元素;
(7)输出元素a的位置;
(8)在第4个元素位置上插入元素f;
(9)输出单链表h;
(10)删除h的第3个元素;
(11)输出单链表h;
(1)初始化单链表h;
(2)采用尾插法依次插入元素a,b,c,d,e;
(3)输出单链表h;
(4)输出单链表h长度;
(5)判断单链表h是否为空;
(6)输出单链表h的第3个元素;
(7)输出元素a的位置;
(8)在第4个元素位置上插入元素f;
(9)输出单链表h;
(10)删除h的第3个元素;
(11)输出单链表h;
(12)释放单链表h。
#include <iostream>#include <cstdlib>using namespace std;struct LinkList{ char data; struct LinkList * next;};void InitList(LinkList *&);//初始化单链表void CreateList(LinkList *&,char [],int);//尾插法插入单链表void DispList(LinkList *);//输出单链表int ListLength(LinkList *);//输出单链表长度bool ListEmpty(LinkList *);//判断单链表是否为空char GetElem(LinkList *,int);//输出单链表的第a个元素int LocateElem(LinkList *,char);//输出某元素的位置bool ListInsert(LinkList *&,int,char);//在某位置插入元素bool ListDelete(LinkList *&,int);//删除某个元素void DestroyList(LinkList *&);//释放单链表int main(){ char a[]="abcde"; cout<<"单链表的基本算法如下:"<<endl; LinkList *L; InitList(L); cout<<"(1)初始化单链表H"<<endl; CreateList(L,a,5); cout<<"(2)依次采用尾插法插入a,b,c,d,e元素"<<endl; cout<<"(3)输出单链表H:"; DispList(L); cout<<"(4)单链表H长度="<<ListLength(L)<<endl; cout<<"(5)单链表H为"<<(ListEmpty(L)?"":"非")<<"空"<<endl; cout<<"(6)单链表H的第3个元素="<<GetElem(L,3)<<endl; cout<<"(7)元素a的位置="<<LocateElem(L,'a')<<endl; cout<<"(8)在第4个元素位置上插入f元素"<<(ListInsert(L ,4,'f')?"...Success":"...Failed")<<endl; cout<<"(9)输出单链表H:"; DispList(L); cout<<"(10)删除单链表H的第3个元素"<<(ListDelete(L,3)?"...Success":"...Failed")<<endl; cout<<"(11)输出单链表H:"; DispList(L); cout<<"(12)释放单链表H"; DestroyList(L);}void InitList(LinkList *&L){ L=(LinkList *)malloc(sizeof(LinkList)); L->next=NULL;}void CreateList(LinkList *&L,char a[],int n){ LinkList *s,*r; int i; L=(LinkList *)malloc(sizeof(LinkList)); r=L; for(i=0; i<n; i++) { s=(LinkList *)malloc(sizeof(LinkList)); s->data=a[i]; r->next=s; r=s; } r->next=NULL;}void DispList(LinkList *L){ LinkList *p=L->next; while(p!=NULL) { cout<<p->data<<" "; p=p->next; } cout<<endl;}int ListLength(LinkList *L){ int n=0; LinkList *p=L; while(p->next!=NULL) { n++; p=p->next; } return n;}bool ListEmpty(LinkList *L){ return(L->next==NULL);}char GetElem(LinkList *L,int i){ int j=0; LinkList *p=L; while(j<i && p!=NULL) { j++; p=p->next; } if(p==NULL) { return '!'; } else { return p->data; }}int LocateElem(LinkList *L,char e){ int i=1; LinkList *p=L->next; while(p!=NULL && p->data!=e) { p=p->next; i++; } if (p==NULL) { return 0; } else return 1;}bool ListInsert(LinkList *&L,int i,char e){ int j=0; LinkList *p=L,*s; while(j<i-1 && p!=NULL) { j++; p=p->next; } if (p==NULL) { return false; } else { s=(LinkList *)malloc(sizeof(LinkList)); s->data=e; s->next=p->next; p->next=s; return true; }}bool ListDelete(LinkList *&L,int i){ int j=0; LinkList *p=L,*q; while(j<i-1 && p!=NULL) { j++; p=p->next; } if(p==NULL) return false; else { q=p->next; if(q==NULL) return false; p->next=q->next; free(q); return true; }}void DestroyList(LinkList *&L){ LinkList *pre=L,*p=L->next; while(p!=NULL) { free(pre); pre=p; p=pre->next; } free(pre);}运行结果:
0 0
- 数据结构 - 简单的单链表结构
- 数据结构 - 简单的顺序表结构
- 数据结构-简单的链表结构
- 站在JAVA数据结构的视角看待简单表结构
- 数据结构单链表的简单应用
- 数据结构的逻辑结构和物理结构
- C#数据结构单链表的简单实现
- 数据结构1-简单单链表的创建
- java数据结构之单链表的简单实现
- 数据结构——单链表的简单实现
- 数据结构之单链表的简单操作
- [数据结构]单链表C语言的简单实现
- 算法与数据结构之线性结构的相关知识,简单易懂。
- 算法与数据结构之树形结构的相关知识,简单易懂。
- 数据结构的简单概念
- 数据结构的简单应用
- 数据结构的简单理解
- opencv:简单的数据结构
- HDU2222 Keywords Search(AC自动机)
- 1019. 数字黑洞
- Android知识库
- poj1743 Musical Theme(后缀数组|后缀自动机)
- 正则表达式中的匹配,替换,切割,获取,这四个使用时具体用哪一个,进行案例分析
- 数据结构 - 简单的单链表结构
- poj3261 Milk Patterns(后缀数组)
- SQL 查询地理信息中指定距离范围内的记录
- Ural1297 Palindrome(后缀数组)
- android学习四(Activity的生命周期)
- poj2406 Power Strings(kmp失配函数)
- 求解二叉树的深度(高度)_C语言
- poj2774 Long Long Message(后缀数组)
- [总结]后缀数组: 注释+模板