2016年数据结构:单链表的使用
2016-03-23 13:38
344 查看
#include <iostream> #include <string> #include <cstring> #include <malloc.h> using namespace std; typedef struct Lnode { char data; struct Lnode *Next; } LinkList; void CreateListF(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 DisList(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; 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 *L; InitList(L); char b[5]={'a','b','c','d','e'}; CreateListF(L,b,5); DisList(L); cout<<"该单链表的长度为:"<<ListLength(L)<<endl; if(ListEmpty(L)) { cout<<"该链表为空"<<endl; } else { cout<<"该链表不为空"<<endl; } char e; GetElem(L,3,e); cout<<"链表中第三个元素的值为:"<<e<<endl; cout<<'a'<<"所在的位置为:"<<LocateElem(L,'a')<<endl; ListInsert(L,4,'f'); cout<<"插入元素后链表为:"; DisList(L); ListDelete(L,3,e); cout<<"删除元素后链表为:"; DisList(L); DestroyList(L); return 0; }
相关文章推荐
- 数据结构---线性表----静态链表
- 数据结构---线性表----静态链表
- 数据结构---线性表----静态链表
- 数据结构---线性表----静态链表
- 数据结构---线性表----静态链表
- 数据结构---线性表----静态链表
- 数据结构---线性表----静态链表
- 数据结构---线性表----静态链表
- 数据结构---线性表----静态链表
- 数据结构---线性表----静态链表
- 数据结构---线性表----静态链表
- 数据结构---线性表----静态链表
- 数据结构---线性表----静态链表
- 数据结构---线性表----静态链表
- 数据结构---线性表----静态链表
- 数据结构---线性表----静态链表
- Python 数据结构与算法——二叉搜索树的实现
- 二叉树的先序、中序、后序遍历
- 数据结构实验1-3
- 数据结构实验1-2