软件技术基础实验1、线性表应用1、实验内容实现课本上的8-11页,线性表例程。主要算法:1、查找操作2、插入操作3、删除操作2工程构建创建一个工程,将*.cpp文件加入工程。-OESCL8区DZile Iaite Fiw Inrt Erojeet Build Inle Findo Falyx03120B吃·国stronetimestrAmWin32 Debug品酒国专(Globals)[(All global membersmain71widinoworkspaceincludestdio,h"ttt'prottt filesSource Filesedefine maxenSint data[maxlen+1]:Int seareh(int x,int v[naxlen+1l))Resource Filesint [naxlen+1]];void insqlist (int x, int i,void-delsqlist(int i,int v[maxlen+1]);voidmainointi,x;printrc请输入数据:In')for (t-1;i<-maxlen;i+scanf("%d"&data[i)for (t-l;i<-maxlen; i++)atdata[0]-maxlen;在线性表V中查我为3的数据元素·printr(查找3是否在表内,“回0,表示没有。n");x=3;int find-search(x,data):printr(%d的下标为%dn",x,find);在线性专中底第3个位胃,插入值为8的教据元素,滋出表满了,,owen Fieiew DVAMeTnuildDebuy Find inFilee Find in Fitet 2 XKerultaReadyLn50.Cel32REC|coLJoOVRMEAD程序代码3# include"stdio.h"#definemaxlen5int data[maxlen+1];int search(int x, int v[maxlen+1]);void insqlist(int x, int i, int v[maxlen+1]);void delsqlist(int i, int vmaxlen+1]);1/18
1 / 18 软件技术基础 实验 1、线性表应用 1、实验内容 实现课本上的 8-11 页,线性表例程。 主要算法: 1、查找操作 2、插入操作 3、删除操作 2 工程构建 创建一个工程,将*.cpp 文件加入工程。 3 程序代码 # include "stdio.h" #define maxlen 5 int data[maxlen+1]; int search(int x, int v[maxlen+1]); void insqlist(int x, int i, int v[maxlen+1]); void delsqlist(int i, int v[maxlen+1]);
void main()1int i,x;printf("请输入数据:n");for (i=1;i<=maxlen;i++)scanf("%d",&data[1];for (i=1;i<=maxlen;i++)printf("%d]",data[]);printf("\n");data[0]=maxlen;在线性表V中查找值为3的数据元素*//*printf("查找3是否在表内,返回0,表示没有。n");x=3;int find=search(,data);printf("%d 的下标为%d)n"x,find);在线性表V中底第3个位置,插入值为8的数据元素,溢出表满了。*//*printf("在线性表中底第3个位置,插入值为8的数据元素。溢出,表满了\n);x=8;i=3;insqlist(x,i);for (i=1;i<=data[0];i++)printf(" %d I",data[1]);printf("\n");/*在线性表V中删除第3个位置的数据元素*/i=3;delsqlist(i,);for (i=1;i<=data[0];i++)printf("%d ",data[]);printf("In");/*在线性表V中底第3个位置,插入值为9的数据元素*/x=9;i=3;insqlist(x,,data);for (i=1;i<=data[0];i++)printf("%d I",data[1]);printf("\n");2 / 18
2 / 18 void main() { int i,x; printf(" 请输入数据:\n"); for (i=1;i<=maxlen;i++) scanf("%d",&data[i]); for (i=1;i<=maxlen;i++) printf("%d|",data[i]); printf("\n"); data[0]=maxlen; /* 在线性表 V 中查找值为 3 的数据元素*/ printf("查找 3 是否在表内, 返回 0,表示没有。\n"); x=3; int find=search(,data); printf("%d 的下标为 %d\n",x,find); /* 在线性表 V 中底第 3 个位置,插入值为 8 的数据元素,溢出表满了。*/ printf("在线性表 V 中底第 3 个位置,插入值为 8 的数据元素。溢出,表满了\n"); x=8; i=3; insqlist(x,i); for (i=1;i<=data[0];i++) printf(" %d |",data[i]); printf("\n"); /* 在线性表 V 中删除第 3 个位置的数据元素*/ i=3; delsqlist(i,); for (i=1;i<=data[0];i++) printf("%d ",data[i]); printf("\n"); /* 在线性表 V 中底第 3 个位置,插入值为 9 的数据元素*/ x=9; i=3; insqlist(x,i,data); for (i=1;i<=data[0];i++) printf("%d |",data[i]); printf("\n");
int search(int x, int v[maxlen+1)1int i=1;while (i<=v[0])if (v[i]!=x)i=i+1;else/*找到元素ai*/returni;1return 0;1/*在第1个位置插入一个新结点*/void insqlist(int x, int i, I)1int j;if (v[0]==maxlen)printf("溢出!");else1printf("%d是一个不正确的插入号码\n",i);if (i<1) 11 (i>v[0])elset/*元素后移*for (j=v[0];j>=i;j--)v[j+1]=v[i];/*插入元素*/v[]=x;/*表长度加1*/v[0]=v[0]+1;}/*删除线性表中的第i个结点*void delsqlist(int i, int v[maxlen+1])1int j;if (v[0]<1)printf("下溢!");else(if (i<1 // i>v[0])printf("%d是一个不正确的删除号码)n"j);else13/18
3 / 18 } int search(int x, int v[maxlen+1]) { int i=1; while (i<=v[0]) { if (v[i]!=x) i=i+1; else return i; /* 找到元素 ai */ } return 0; } /*在第 i 个位置插入一个新结点*/ void insqlist(int x, int i, ]) { int j; if (v[0]==maxlen) printf("溢出!"); else { if ((i<1) || (i>v[0])) printf("% d 是一个不正确的插入号码\n",i); else { for (j=v[0];j>=i;j-) v[j+1]=v[j]; /* 元素后移 */ v[i]=x; /* 插入元素 */ v[0]=v[0]+1; /* 表长度 加 1 */ } } } /*删除线性表中的第 i 个结点*/ void delsqlist(int i, int v[maxlen+1]) { int j; if (v[0]<1) printf("下溢!"); else { if (i<1 || i>v[0]) printf("% d 是一个不正确的删除号码\n",i); else {
for (j=i; j<v[0];j++)vli]=vli+1];/*元素前移,覆盖被删除的元素*/v[0]=v[0]-1;/*表长度减1*4 / 18
4 / 18 for (j=i; j<v[0];j++) v[j]=v[j+1]; /* 元素前移,覆盖被删除的元素 */ v[0]=v[0]-1; /* 表长度 减 1 */ } } }
软件技术基础实验2、堆栈应用1、实验内容实现课本上的13-15页,堆栈应用例程。主要算法:1、堆栈数据结构的建立2、出栈操作3、进栈操作2工程构建创建一个工程,将*.cpp文件加入工程。Stnck-Licresoft Visenl CttkaxDEilEait BiuDaertBrejeet Fol IolsFiobe Baax#品品O物0.国含stronetimStackWin32 Debug4[(Globals][All global memberspush_stackd paslSWorcewincluide"stdio.hstack filesSourceFiles#define maxsize 10下线空间为10esdecFiesdata[01-选顶指针]int data[maxsize+1];Resource Files产在顶插入数据?!void push_stack(int x, int s[maxsize+1)printf(压栈前:top=%dx=%d|n", s[0], );if (s[0]==maxsize)printf(OVERFLOWn)elses[0]=s[0]+1; s[01]=xprintfC压栈后"printf( top=%d s[top]=%d/n',s[0] s(s[0m;printf(\n"):*弹出栈顶元素!voidpop_stack(int s[maxsize+1])CthFaeveGABnild Curut X Find n ilreXFand in FiinnXKenalteReadyLn9,.Cot54JRUCICOLKOVBIREAD)程序代码3#include"stdio.h"/*栈空间为10*/#definemaxsize10/*data[0]-栈顶指针*/int data[maxsize+1];/*在栈顶插入数据*/void push_stack(int x,int s[maxsize+1])1printf("压栈前:top=%dx=%d)n", s[0], x);if (s[0]==maxsize)printf("OVERFLOWn");5/18
5 / 18 软件技术基础实验 2、堆栈应用 1、实验内容 实现课本上的 13-15 页,堆栈应用例程。 主要算法: 1、堆栈数据结构的建立 2、出栈操作 3、进栈操作 2 工程构建 创建一个工程,将*.cpp 文件加入工程。 3 程序代码 #include "stdio.h" #define maxsize 10 /* 栈空间为 10 */ int data[maxsize+1]; /* data[0]-栈顶指针 */ /* 在栈顶插入数据*/ void push_stack(int x, int s[maxsize+1]) { printf(" 压栈前: top=%d x=%d\n", s[0], x); if (s[0]==maxsize) printf("OVERFLOW\n");