实验报告课程名称 数据结构
姓名
学号
专业班级指导教师
目录
第二章线性表的查找、插入、删除. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1
1 .1顺序表的查找. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1
1 .2顺序表的插入. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3
1 .3顺序表的删除. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7
单链表的建立、插入、删除. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10
2.1单链表的建立尾插法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10
2.2单链表的插入. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13
2.3单链表的删除. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17
第三章栈. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24
3.1链栈. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24
3.2顺序栈. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28
3.3队列. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30
3.4杨辉三角. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35
第四章串. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . .23
4.1字符串的建立. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23
4.2顺序串的插入. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25
1 .线性表的查找、插入、删除
1 .1顺序表的查找
程序
#include<stdio.h>
#include<stdl ib.h>
#include<mal loc.h>
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define ElemType int
#define MAXSIZE 100/*此处的宏定义常量表示线性表可能达到的最大长度*/typedef struct
{
ElemType elem[MAXSIZE]; /*线性表占用的数组空间*/int last; /*记录线性表中最后一个元素在数组elem[]中的位置(下标值)空表为-1*/
}Seq{l ist;int Locate(Seql ist L,ElemType e)
/*在顺序表L中查找与e相等的元素若L。 elem[i]=e,贝U找到该元素并返回i+1 若找不到则返回-1*/
{ int i=0; /*i为扫描计数器初值为0 即从第一个元素开始比较*/whi le
((i<=L. last)&&(L.elem[i]!=e))
/*顺序扫描表直到找到值为e的元素或扫描到表尾仍没找到*/ i++;if(i<=L. last)retu rn(i+1); /*若找到值为e的元素 贝返回其序号*/elseretu rn(-1); /*若没找到 贝返回空序号*/
}void main()
{
Seql ist l ;intp,q,r;int i ;printf("请输入线性标的长度:");scanf("%d",&r);l . last=r-1;printf("请输入线性表的各元素值 \n");for (i=0; i<=l . last; i++)
}printf("请输入要查找的元素值:\n");sea nf("%d",&q);p=Locate(l ,q);if(p==-1)printf("在此线性表中没有该元素!\n");elseprintf("该素在线性表中的位置为:%d\n",p);
执行结果:
错误分析:在编写过程中在编写主函数的时候有落下未编写的导致运行过程中不识别。
1 .2顺序表的插入
程序:
#include<stdio.h>#include<stdl ib.h>//#include<mal loc.h>
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define ElemType int
#define MAXSIZE 100typedef struct
{
ElemType elem[MAXSIZE];int last;
}SeqList;
//#include"common.h"
//#include"seql ist.h"int InsList(SeqList *L, int i ,ElemType e){
intk;if((i<1) | | (i>L->last+2))
{printf("插入位置i值不合法"); return(ERROR);}if(L->last>=MAXSIZE-1)
{printf("表已满无法插入"); return(ERROR);}for(k=L->last;k>=i-1;k--)
L->elem[k+1]=L->elem[k];
L->elem[i-1]=e;
L->last++;retu rn(OK);
}void main()
SeqList *l ;
{
intp,q,r;int i ; l=(SeqList*)mal loc(sizeof(SeqList));printf("请输入线性表的长度:");scanf("%d",&r);l->last=r-1;printf("请输入线性表的各元素值:\n");for(i=0; i<=l->last; i++)
{scanf("%d",&l->elem[i]);
}printf("请输入要插入的位置:\n");scanf("%d",&p);printf("请输入要插入的元素值:\n");scanf("%d",&q);
InsList(l ,p,q);for(i=0; i<=l->last; i++)
{printf("%d", l->elem[i]);
}
执行结果
}
hostslim美国独立日活动正在进行中,针对一款大硬盘荷兰专用服务器:双E5-2620v2/4x 1TB SATA硬盘,活动价60美元月。HostSlim荷兰服务器允许大人内容,不过只支持电汇、信用卡和比特币付款,商家支持7天内退款保证,有需要欧洲服务器的可以入手试试,记得注册的时候选择中国,这样不用交20%的税。hostslim怎么样?HostSlim是一家成立于2008年的荷兰托管服务器商,...
VPSDime是2013年成立的国外VPS主机商,以大内存闻名业界,主营基于OpenVZ和KVM虚拟化的Linux套餐,大内存、10Gbps大带宽、大硬盘,有美国西雅图、达拉斯、新泽西、英国、荷兰机房可选。在上个月搞了一款达拉斯Linux系统VPS促销,详情查看:VPSDime夏季促销:美国达拉斯VPS/2G内存/2核/20gSSD/1T流量/$20/年,此次推出一款Windows VPS,依然是...
小渣云 做那个你想都不敢想的套餐 你现在也许不知道小渣云 不过未来你将被小渣云的产品所吸引小渣云 专注于一个套餐的商家 把性价比 稳定性 以及价格做到极致的商家,也许你不相信36元在别人家1核1G都买不到的价格在小渣云却可以买到 8核8G 高配云服务器,并且在安全性 稳定性 都是极高的标准。小渣云 目前使用的是美国超级稳定的ceranetworks机房 数据安全上 每5天备份一次数据倒异地 支持一...