数据结构实验三——双链表的操作初始化插入输出解析.docVIP

  • 32
  • 0
  • 约3.18千字
  • 约 7页
  • 2016-10-22 发布于湖北
  • 举报

数据结构实验三——双链表的操作初始化插入输出解析.doc

数据结构 实验报告 题目:双链表的操作理解双链表的基本操作 了解双链表的建立和输出 掌握双链表的插入、删除等实现方法 编写一个程序,实现双链表的各种基本运算(假设双链表的元素类型为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。#includestdio.h #includestdlib.h typedef char datatype; typedef struct node { datatype data; struct node *prior; struct node *next; }linklist; void insert(linklist *L, datatype e) //采用尾插法插入元素 { linklist *p,*q; p=L; while(p-next!=NULL) p=p-next; q=(linklist *)malloc(sizeof(linklist)); q-data=e; q-prior=p; p-next=q; q-next=NULL; } void disp(linklist *L) //输出链表数据 { linklist *p; p=L-next; while(p!=NULL) { printf(%c ,p-data); p=p-next; } printf(\n); } void length(linklist *L) //输出链表长度 { linklist *p; p=L; int i=0; while(p-next!=NULL) { i++; p=p-next; } printf(the length of the list is: %d\n,i); } void empty(linklist *L) //判断双链表是否为空 { if(L==NULL) printf(empty!\n); else printf(not enmpty!\n); } int get(linklist *L,int i) //输出双链表的第i个元素; { int j=0; linklist *p; p=L; while(jip!=NULL) { j++; p=p-next; } if(p==NULL) return 0; else { printf(%c\n,p-data); return 1; } } int find(linklist *L,datatype e) //寻找值为e的节点位置 { int i=1; linklist *p; p=L-next; while(p!=NULLp-data!=e) { p=p-next; i++; } if(p==NULL) return(0); else { printf(%d\n,i); return(1); } } void insertlist(linklist *L, int i, datatype e) //在第i个位置插入元素e { linklist *p,*q; p=L; int j=0; while(jip!=NULL) { j++; p=p-next; } p=p-prior; q=(linklist*)malloc(sizeof(linklist)); q-data=e; q-next=p-next; q-prior=p; p-next=q; } int deletelist(linklist *L,int i) //删除双链表的第i个元素; { int j=0; linklist *p,*q; p=L; while(jip!=NULL) { j++; p=p-next; } if(p=

文档评论(0)

1亿VIP精品文档

相关文档