数据结构双链表操作
来源:互联网 发布:修改软件版权 编辑:程序博客网 时间:2024/05/16 14:05
#include<stdio.h>#include<stdlib.h>#include<malloc.h>typedef char ElemType;typedef struct DuLNode{ ElemType data; struct DuLNode *prior; struct DuLNode *next;}DuLinkList;int DuLink_ListInsertR(DuLinkList *L,ElemType e)//采用尾插法插入元素{ DuLinkList *p=L,*q; while(p->next!=NULL) { p=p->next; } q=(DuLinkList *)malloc(sizeof(DuLinkList)); q->data=e; q->prior=p; p->next=q; q->next=NULL; return 1;}void DuLink_DispList(DuLinkList *L){ DuLinkList *p; p=L->next; while(p!=NULL) { printf("%c",p->data); p=p->next; } printf("\n");}void DuLink_ListLength(DuLinkList *L){ DuLinkList *p; p=L; int i=0; while(p->next!=NULL) { i++; p=p->next; } printf("长度为: %d\n",i);}bool DuLink_ListEmpty(DuLinkList *L){ return(L->next==NULL);}bool DuLink_GetElem(DuLinkList *L,int i,ElemType &e){ int j=0; DuLinkList *p; p=L; while(j<i &&p!=NULL) { j++; p=p->next; } if(p==NULL) return 0; else { printf("%c\n",p->data); return 1; }}int DuLink_LocateElem(DuLinkList *L,ElemType e){ int i=1; DuLinkList *p=L->next; while(p!=NULL&&p->data!=e) { p=p->next; i++; } if(p==NULL) return 0; else { printf("%d\n",i); return 1; }}void DuLink_ListInsert(DuLinkList *&L,int i,ElemType e){ DuLinkList *p,*q; p=L; int j=0; while(j<i&&p!=NULL) { j++; p=p->next; } p=p->prior; q=(DuLinkList *)malloc(sizeof(DuLinkList)); q->data=e; q->next=p->next; q->prior=p; p->next=q;}int DuLink_ListDestroy(DuLinkList *&L,int i,ElemType &e){ int j=0; DuLinkList *p,*q; p=L; while(j<i&&p!=NULL) { j++; p=p->next; } if(p==NULL) return 0; else { q=p; p=p->prior; p->next=q->next; free(q); return 1; }}void DuLink_DestroyList(DuLinkList *&L){ DuLinkList *p,*q; p=L; q=p->next; while(q!=NULL) { free(q); p=q; q=q->next; } free(p);}void DuLink_InitList(DuLinkList *&L){ L=(DuLinkList *)malloc(sizeof(DuLinkList)); L->prior=NULL; L->next=NULL;}int main(){ DuLinkList *h; ElemType e; printf("双链表的基本运算如下:\n"); DuLink_InitList(h); printf("初始化双链表h\n"); printf("依次采用尾插入法插入a,b,c,d,e元素\n"); DuLink_ListInsertR(h,'a'); DuLink_ListInsertR(h,'b'); DuLink_ListInsertR(h,'c'); DuLink_ListInsertR(h,'d'); DuLink_ListInsertR(h,'e'); printf("输出双链表h:\n"); DuLink_DispList(h); printf("双链表h长度"); DuLink_ListLength(h); printf("判断双链表h是为空\n"); DuLink_ListEmpty(h); printf("输出双链表h的第3个元素\n"); DuLink_GetElem(h,3,e);printf("元素a的位置=%d\n",DuLink_LocateElem(h,'a'));printf("在第4个元素之后插入f元素\n");DuLink_ListInsert(h,4,'f');printf("输出双链表h:");DuLink_DispList(h);printf("删除h的第3个元素\n");DuLink_ListDestroy(h,3,e);printf("输出双链表h:");DuLink_DispList(h);printf("释放双链表h\n");DuLink_DestroyList(h);}
0 0
- 数据结构之双链表操作
- 数据结构双链表操作
- 数据结构->双链表的操作
- 数据结构—双链表的操作
- [数据结构]双链表删除结点P的操作
- 数据结构之双链表的基本操作
- 数据结构——双链表的操作
- 数据结构--双链表的创建和操作
- 数据结构大多数的操作
- 数据结构--栈的操作
- 数据结构-二叉树操作
- 数据结构--线性表操作
- 数据结构栈操作
- 数据结构-队列操作
- OPEN操作中的数据结构
- 数据结构基本操作源代码
- 数据结构--单链表基本操作
- Javascript数据结构操作
- 定时器的两种实现方式
- com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Unterminated obj
- 数据结构看书笔记(三)--线性表
- 干货:数据可视化的十大误区,为何你只能做出渣图表
- 关于NSMutableArray和NSArray的一些坑
- 数据结构双链表操作
- 上帝模式~~~有效的隐藏文件!
- Java中的final关键字
- 决策树之鸢尾花卉实例解析
- Spring容器中的Bean几种初始化方法和销毁方法的先后顺序
- HTML之JavaScript基础知识
- 利用vfw库将一系列bmp图转换为压缩的avi视频
- unity各平台判断条件
- localhost改为本机ip