欢迎来到天天文库
浏览记录
ID:22425358
大小:414.50 KB
页数:31页
时间:2018-10-29
《112208101118宋波-软件基础试验》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验一顺序表的建立和基本运算一、实验目的1、掌握顺序表存储结构的定义及C/C++语言实现2、掌握顺序表的各种基本操作及C/C++语言实现3、设计并实现有序表的遍历、插入、删除等常规算法二、实验环境PC微机,Windows,DOS,TurboC或VisualC++三、实验内容2、顺序表的就地逆转(1)问题描述顺序表的就地逆转是指在顺序表现有空间的基础上,将顺序表中的数据元素交换位置排列,排列完之后,新的顺序序列与原来的顺序序列刚好相反。如原来顺序序列“abcdef”,就地逆转之后的新顺序序列为“fedcba”。实验源程序如下:#include2、io.h>#include#defineMaxSize50typedefcharElemType;typedefstructSqList{ElemTypedata[MaxSize];intlength;};voidInitList(SqList*&L){L=(SqList*)malloc(sizeof(SqList));L->length=0;}voidDestroyList(SqList*L)31{free(L);}intListEmpty(SqList*L){return(L->length==0);}intListLeng3、th(SqList*L){return(L->length);}voidDispList(SqList*L){inti;if(ListEmpty(L))return;for(i=0;ilength;i++)printf("%c",L->data[i]);printf("");}intGetElem(SqList*L,inti,ElemType&e){if(i<14、5、i>L->length)return0;e=L->data[i-1];return1;}intLocateElem(SqList*L,ElemTypee){inti=0;wh6、ile(ilength&&L->data[i]!=e)i++;31if(i>=L->length)return0;elsereturni+1;}intListInsert(SqList*&L,inti,ElemTypee){intj;if(i<17、8、i>L->length+1)return0;i--;//将顺序表位序转化为elem下标*/for(j=L->length;j>i;j--)//将data[i]及后面元素后移一个位置*/L->data[j]=L->data[j-1];L->data[i]=e;L->length++;//顺序表长度9、增1*/return1;}intListDelete(SqList*&L,inti,ElemType&e){intj;if(i<110、11、i>L->length)return0;i--;//将顺序表位序转化为elem下标*/e=L->data[i];for(j=i;jlength-1;j++)L->data[j]=L->data[j+1];L->length--;return1;}//主函数31voidmain(){ElemTypee;structSqList*L1;structSqList*L2;inti,j;//建立空表L1,L2InitL12、ist(L1);InitList(L2);//给L1赋值for(j=1;j<=5;j++){ListInsert(L1,1,j);}printf("在L1的表头依次插入5~1后:");for(j=0;j<5;j++)printf("%d",L1->data[j]);printf("");j=0;//逆转L1,并把逆转值给L2for(i=1;i<=5;i++){GetElem(L1,i,e);ListInsert(L2,1,e);}printf("");printf("L1就地逆转结果:");for(j=0;j<5;j++)printf("%13、d",L2->data[j]);printf("");31printf("");printf("释放顺序表L1");DestroyList(L1);printf("");printf("释放顺序表L2");DestroyList(L2);printf("");}实验结果如下:实验二链表的建立和基本运算一、实验目的1、掌握链表存储结构的定义及C/C++语言实现2、掌握双链表的特点和基本运算及C/C++语言实现3、建立并正反序显示双链表结点数据,并执行结点插入操作二、实验环境31PC微机,Windows,DOS,TurboC或V14、isualC++三、实验内容2、求集合的并、交和差集(1)问题描述求出任意两个正整数集合的的交、并和差集。实验源程序如下:
2、io.h>#include#defineMaxSize50typedefcharElemType;typedefstructSqList{ElemTypedata[MaxSize];intlength;};voidInitList(SqList*&L){L=(SqList*)malloc(sizeof(SqList));L->length=0;}voidDestroyList(SqList*L)31{free(L);}intListEmpty(SqList*L){return(L->length==0);}intListLeng
3、th(SqList*L){return(L->length);}voidDispList(SqList*L){inti;if(ListEmpty(L))return;for(i=0;ilength;i++)printf("%c",L->data[i]);printf("");}intGetElem(SqList*L,inti,ElemType&e){if(i<1
4、
5、i>L->length)return0;e=L->data[i-1];return1;}intLocateElem(SqList*L,ElemTypee){inti=0;wh
6、ile(ilength&&L->data[i]!=e)i++;31if(i>=L->length)return0;elsereturni+1;}intListInsert(SqList*&L,inti,ElemTypee){intj;if(i<1
7、
8、i>L->length+1)return0;i--;//将顺序表位序转化为elem下标*/for(j=L->length;j>i;j--)//将data[i]及后面元素后移一个位置*/L->data[j]=L->data[j-1];L->data[i]=e;L->length++;//顺序表长度
9、增1*/return1;}intListDelete(SqList*&L,inti,ElemType&e){intj;if(i<1
10、
11、i>L->length)return0;i--;//将顺序表位序转化为elem下标*/e=L->data[i];for(j=i;jlength-1;j++)L->data[j]=L->data[j+1];L->length--;return1;}//主函数31voidmain(){ElemTypee;structSqList*L1;structSqList*L2;inti,j;//建立空表L1,L2InitL
12、ist(L1);InitList(L2);//给L1赋值for(j=1;j<=5;j++){ListInsert(L1,1,j);}printf("在L1的表头依次插入5~1后:");for(j=0;j<5;j++)printf("%d",L1->data[j]);printf("");j=0;//逆转L1,并把逆转值给L2for(i=1;i<=5;i++){GetElem(L1,i,e);ListInsert(L2,1,e);}printf("");printf("L1就地逆转结果:");for(j=0;j<5;j++)printf("%
13、d",L2->data[j]);printf("");31printf("");printf("释放顺序表L1");DestroyList(L1);printf("");printf("释放顺序表L2");DestroyList(L2);printf("");}实验结果如下:实验二链表的建立和基本运算一、实验目的1、掌握链表存储结构的定义及C/C++语言实现2、掌握双链表的特点和基本运算及C/C++语言实现3、建立并正反序显示双链表结点数据,并执行结点插入操作二、实验环境31PC微机,Windows,DOS,TurboC或V
14、isualC++三、实验内容2、求集合的并、交和差集(1)问题描述求出任意两个正整数集合的的交、并和差集。实验源程序如下:
此文档下载收益归作者所有