数据结构-线性表-单链表的查找、插入、删除

上传人:hs****ma 文档编号:502634731 上传时间:2023-11-02 格式:DOC 页数:23 大小:67.50KB
返回 下载 相关 举报
数据结构-线性表-单链表的查找、插入、删除_第1页
第1页 / 共23页
数据结构-线性表-单链表的查找、插入、删除_第2页
第2页 / 共23页
数据结构-线性表-单链表的查找、插入、删除_第3页
第3页 / 共23页
数据结构-线性表-单链表的查找、插入、删除_第4页
第4页 / 共23页
数据结构-线性表-单链表的查找、插入、删除_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《数据结构-线性表-单链表的查找、插入、删除》由会员分享,可在线阅读,更多相关《数据结构-线性表-单链表的查找、插入、删除(23页珍藏版)》请在金锄头文库上搜索。

1、实验报告课程名称 数据结构姓 名 学 号 专业班级 指导教师 目录第二章线性表的查找、插入、删除11.1顺序表的查找11.2顺序表的插入21.3顺序表的删除4单链表的建立、插入、删除62.1 单链表的建立尾插法62.2 单链表的插入82.3 单链表的删除10第三章栈143.1链栈143.2 顺序栈163.3队列183.4杨辉三角20第四章串.234.1字符串的建立.234.2顺序串的插入.251.线性表的查找、插入、删除1.1顺序表的查找程序:#include #include#include#define OK 1#define ERROR 0#define TRUE 1#define FA

2、LSE 0#define ElemType int#define MAXSIZE 100 /*此处的宏定义常量表示线性表可能到达的最大长度*/typedef struct ElemType elemMAXSIZE; /*线性表占用的数组空间*/int last; /*记录线性表中最后一个元素在数组elem中的位置下标值,空表为-1*/Seqlist;int Locate(Seqlist L,ElemType e) /*在顺序表L中查找与e相等的元素,假设L。elemi=e,那么找到该元素,并返回i+1,假设找不到,那么返回-1*/ int i=0; /*i为扫描计数器,初值为0,即从第一个元素

3、开始比拟*/while (i=L.last)&(L.elemi!=e) /*顺序扫描表,直到找到值为e的元素,或扫描到表尾仍没找到*/i+;if(i=L.last)return (i+1); /*假设找到值为e的元素,那么返回其序号*/elsereturn(-1); /*假设没找到,那么返回空序号*/void main()Seqlist l;int p,q,r;int i;printf(请输入线性标的长度:);scanf(%d,&r);l.last=r-1;printf(请输入线性表的各元素值:n);for (i=0;i=l.last;i+)scanf(%d,&l.elemi);printf(

4、请输入要查找的元素值:n);scanf(%d,&q);p=Locate(l,q);if(p=-1)printf(在此线性表中没有该元素!n);elseprintf(该素在线性表中的位置为:%dn,p);执行结果:错误分析:在编写过程中,在编写主函数的时候有落下未编写的,导致运行过程中不识别。1.2顺序表的插入程序:#include #include /#include #define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define ElemType int#defineMAXSIZE 100 typedef struct Elem

5、Type elemMAXSIZE; int last; SeqList;/#include common.h/#include seqlist.hint InsList(SeqList *L,int i,ElemType e) int k;if(iL-last+2) printf(插入位置i值不合法);return(ERROR);if(L-last= MAXSIZE-1)printf(表已满无法插入);return(ERROR);for(k=L-last;k=i-1;k-) L-elemk+1=L-elemk;L-elemi-1=e; L-last+;return(OK);void main(

6、)SeqList *l;int p,q,r;int i;l=(SeqList*)malloc(sizeof(SeqList);printf(请输入线性表的长度:);scanf(%d,&r);l-last = r-1;printf(请输入线性表的各元素值:n);for(i=0; ilast; i+)scanf(%d,&l-elemi);printf(请输入要插入的位置:n);scanf(%d,&p);printf(请输入要插入的元素值:n);scanf(%d,&q);InsList(l,p,q);for(i=0; ilast; i+)printf(%d ,l-elemi);执行结果:1.3顺序表

7、的删除程序:#include #include #include #define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define ElemType int#defineMAXSIZE 100 typedef struct ElemType elemMAXSIZE; int last; SeqList;int DelList(SeqList *L,int i,ElemType *e) int k;if(iL-last+1) printf(删除位置不合法!);return(ERROR);*e = L-elemi-1; for(k=i;

8、 ilast; k+)L-elemk-1 = L-elemk; L-last-;return(OK);void main()SeqList *l;int p,r;int *q;int i;l = (SeqList*)malloc(sizeof(SeqList);q = (int*)malloc(sizeof(int);printf(请输入线性表的长度:);scanf(%d,&r);l-last = r-1;printf(请输入线性表的各元素值:n);for(i=0; ilast; i+)scanf(%d,&l-elemi);printf(请输入要删除的元素位置:n);scanf(%d,&p);

9、DelList(l,p,q);printf(删除的元素值为:%dn,*q);执行结果:2. 单链表的建立、插入、删除2.1 单链表的建立尾插法程序:#include#include#define ERROR 0#define TRUE 1#define FALSE 0typedef char ElemType;typedef struct Node /*结点类型定义*/ ElemType data; struct Node * next;Node, *LinkList; /* LinkList为结构指针类型*/void init_linklist(LinkList *l)/*对单链表进行初始化

10、*/ *l=(LinkList)malloc(sizeof(Node); (*l)-next=NULL;void CreateFromTail(LinkList L) Node *r, *s; char c; int flag =1; /*设置一个标志,初值为,当输入$时,flag为,建表结束*/ r=L; /*r指针动态指向链表的当前表尾,以便于做尾插入,其初值指向头结点*/ while(flag) /*循环输入表中元素值,将建立新结点s插入表尾*/ c=getchar(); if(c!=a) s=(Node*)malloc(sizeof(Node); s-data=c; r-next=s;

11、 r=s; else flag=0; r-next=NULL; /*将最后一个结点的next链域置为空,表示链表的结束*/ int main() LinkList l; Node *p; init_linklist(&l); printf(用尾插法建立单链表,请输入链表数据,以a结束!n); CreateFromTail(l); p = l-next; while(p!=NULL) printf(%cn,p-data); p=p-next; return 0;执行结果:错误分析:在代码的时候忘记分号,导致运行错误;截图如下: 2.2 单链表的插入程序:#include common.h#include linklist.hint InsList(LinkList L,int i,ElemType e)/*在带头结点的单链表L中第i个位置插入值为e的新结点s*/ Node *pre,*s;int k;pre=L; k=0; /*从头开始,查找第i-1个结点*/while(pre!=NULL&knext;k=k+1;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 模板/表格 > 财务表格

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号