数据结构-单链表的基本操作
2017-11-01 14:37
459 查看
题目要求:
编写一个程序,实现以下单链表的基本操作(单链表的元素类型elem type为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 (12)释放单链表h
编写一个程序,实现以下单链表的基本操作(单链表的元素类型elem type为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 (12)释放单链表h
#include<iostream> using namespace std; /* *可用elemtype定义数据类型,方便后期修改 *typedef + 数据类型 + elemtype */ typedef struct node { char data;//elemtype data; struct node*next; }linklist;//定义单链表结点类型 void init(linklist*&l)//初始化单链表 { l=(linklist*)malloc(sizeof(linklist)); l->next=NULL; } void display(linklist*&l)//输出单链表 { linklist*p=l->next; while(p!=NULL) { cout<<p->data; p=p->next; } cout<<endl; } int length(linklist*l)//求单链表的长度 { int n=0; linklist*p=l; while(p->next!=NULL) { n++; p=p->next; } return n; } void destroy(linklist*&l)//释放单链表 { linklist*pre=l,*p=l->next; while(p!=NULL) { free(pre); pre=p; p=pre->next; } free(pre); } void findelem(linklist*l,char e)//查找元素编号 { int i=0; linklist*p=l->next; while(p!=NULL&&p->data!=e) { i++; p=p->next; } if(p==NULL) cout<<"该元素不存在!"<<endl; else cout<<e<<"元素位置为:"<<i+1<<endl; } void insetsq(linklist*&l,int i,char e)//在指定位置插入元素 { int j=0; linklist*p=l,*s; if(i<0) cout<<"该位置无法插入!"<<endl; while(j<i-1&&p!=NULL) { j++; p=p->next; } if(p==NULL) cout<<"插入错误!"<<endl; else { //while(e>='a'&&e<='e') //{ s=(linklist*)malloc(sizeof(linklist)); s->data=e; s->next=p->next; p->next=s; //} } } void deletelist(linklist*&l,int i)//删除第i个元素 { int j=0; linklist*p=l,*q; while(j<i-1&&p!=NULL) { j++; p=p->next; } if(p==NULL) cout<<"wrong"<<endl; else { q=p->next; if(q==NULL) cout<<"wrong"<<endl; char e=q->data; p->next=q->next; free(q); cout<<"删除成功!"<<endl; } } void create(linklist*&l,char a[],int n)//创建单链表 { linklist*s,*r; l=(linklist*)malloc(sizeof(linklist)); r=l; for(int i=0;i<n;i++) { s=(linklist*)malloc(sizeof(linklist)); s->data=a[i]; r->next=s; r=s; } r->next=NULL; } void find(linklist*&l,int n)//按编号查找元素 { int j=0; linklist*p=l; if(n<=0) cout<<"wrong input!"<<endl; while(j<n&&p!=NULL) { j++; p=p->next; } if(p==NULL) cout<<"do not find it!"<<endl; else { char e=p->data; cout<<e<<endl; } } void empty(linklist*&l)//判断是否为空 { if(l->next==NULL) cout<<"空!"<<endl; else cout<<"非空!"<<endl; } int main() { linklist*l; char a[]={'q','r','n','u','x','w'}; int k=6; init(l); create(l,a,k);//创建初始化单链表 cout<<"单链表为:"; display(l); cout<<endl; int n; cout<<"输入想插入元素的位置:"<<endl; cin>>n; insetsq(l,n,'e');//依次插入a,b,c,d,e五个元素 insetsq(l,n,'d'); insetsq(l,n,'c'); insetsq(l,n,'b'); insetsq(l,n,'a'); cout<<"插入后:"; display(l); int i=length(l);//显示表的长度 cout<<"单链表长为:"<<i<<endl; empty(l);//判断是否为空 cout<<"第三个元素为:"; find(l,3);//输出单链表第三个元素 findelem(l,'a');//输出a的位置 insetsq(l,4,'f');//在第四个位置插入元素f cout<<"在第四个位置插入'f'后:"; display(l); deletelist(l,3);//删除表的第三个元素 cout<<"删除第三个元素后:"; display(l); destroy(l); return 0;
相关文章推荐
- 数据结构之单链表基本操作
- 数据结构基础(8) --单链表的设计与实现(1)之基本操作
- 【数据结构】单链表的基本操作
- 数据结构—单链表的部分基本操作(C语言)
- 数据结构实现单链表的基本操作
- 【数据结构】单链表的基本操作
- 数据结构—单链表的基本操作(源代码)
- 数据结构——单链表的基本操作
- 数据结构与算法——单链表的基本操作
- 数据结构之单链表、双链表的基本操作
- 用java实现单链表结构与基本数据操作
- 数据结构之单链表的基本操作
- 数据结构基础(8) --单链表的设计与实现(1)之基本操作
- 数据结构(第二天)单链表的基本操作,创建单链表,头插法,尾插法,删除节点,查询节点
- 数据结构——单链表的基本操作
- 数据结构基础(8) --单链表的设计与实现(1)之基本操作
- 数据结构基础(8) --单链表的设计与实现(1)之基本操作
- 数据结构——单链表的基本操作
- 数据结构之链表(1):单链表基本操作
- 数据结构——单链表的基本操作