单链表的运算
来源:互联网 发布:网店美工用什么软件 编辑:程序博客网 时间:2024/05/08 15:41
#include <iostream>#include <string>#include <cstdlib>#include <malloc.h>using namespace std;typedef struct LNode{ char data; struct LNode *next;}LinkList;void CreatList(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 InitList(LinkList * &L){ L=(LinkList *)malloc(sizeof(LinkList)); L->next=NULL;}void DestroyList (LinkList * &L){ LinkList *pre=L,*p=L->next; while(p!=NULL) { free(pre); pre=p; p=pre->next; } free(pre);}bool ListEmpty(LinkList *L){ return (L->next==NULL);}int ListLength(LinkList *L){ int n=0; LinkList *p=L; while(p->next!=NULL) { n++; p=p->next; } return (n);}void DispList(LinkList *L){ LinkList *p=L->next; while(p!=NULL) { cout<<p->data; p=p->next; } cout<<endl;}bool GetElem(LinkList *L,int i,char &e){ int j=0; LinkList *p=L; while(j<i&&p!=NULL) { j++; p=p->next; } if(p==NULL) return false; else { e=p->data; cout<<"第"<<i<<"个元素值为:"<<e<<endl; return true; }}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 (i);}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,char &e){ 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; e=q->data; p->next=q->next; free(q); return true; }}int main(){ LinkList *h; char a[]={'a','b','c','d','e'}; cout<<"初始化单链表L"<<endl; InitList(h); cout<<"采用尾插法一次插入元素abcde:"<<endl; CreatList(h,a,5); cout<<"输出单链表:"; DispList(h); cout<<"单链表的长度为:"<<ListLength(h)<<'\n'; if(ListEmpty(h)==0) cout<<"单链表不为空!"<<'\n'; else cout<<"单链表为空!"<<'\n'; char e,ch,sh; int i,m,x; cout<<"查找第i个元素,请输入i:"; cin>>i; cout<<"输出单链表的第"<<i<<"个元素= "; GetElem(h,3,e); cout<<"查找ch元素的位置,请输入ch:"; cin>>ch; cout<<"输出元素"<<ch<<"的位置:"<<LocateElem(h,ch)<<'\n'; cout<<"在第m个位置上插入元素sh,请输入m和sh: "; cin>>m>>sh; ListInsert(h,m,sh); cout<<"在单链表第"<<m<<"个位置上插入元素"<<sh<<"后,输出单链表:"; DispList(h);//同上 cout<<"删除顺序表第x个元素,请输入x:"; cin>>x; ListDelete(h,x,e);//还是同上 cout<<"删除单链表第"<<x<<"个元素后,输出单链表:"; DispList(h); cout<<"释放单链表h!"; DestroyList(h); return 0;}
0 0
- 单链表的基本运算
- 单链表的运算实现
- 单链表的基本运算
- 单链表的基本运算
- 单链表的运算
- 单链表的运算
- 单链表的基本运算
- 单链表各种基本的运算
- C 单链表的基本运算
- 单链表的各种基本运算
- 有序单链表的归并运算。
- 单链表的各种基本运算
- 算术运算符的运算
- 位运算数的运算
- 位于运算符的运算
- 图像的运算--点运算
- 运算符的运算顺序
- 运算符的运算形式
- Android 系统开机logo的修改
- android:interpolator
- C++日志系统log4cxx使用总结
- 96. Unique Binary Search Trees
- 转载---TCP/IP数据包结构具体解释
- 单链表的运算
- mysql悲观锁总结和实践
- 数据库的反范式化(Denormalization)设计
- 回归基础系列-call by value / call by reference区别与实例
- 百度地图足迹demo(多点轨迹生成)
- 使用android.hardware.camera2打造新的自定义相机
- Linux下安装Matlab2014及破解
- 使用XML文件方式配置log4cxx(log4cxx xml例子)
- 机器学习:核方法和soft svm