实验1 线性表的顺序实现
来源:互联网 发布:刮眉毛会变浓吗 知乎 编辑:程序博客网 时间:2024/04/28 13:00
- 实验目录
- 基于sequlist.h中定义的顺序表,编写算法函数reverse(sequence_list *L),实现顺序表的就地倒置。
- 编写一个算法函数void sprit( sequence_list *L1,sequence_list *L2,sequence_list *L3),将顺序表L1中的数据进行分类,奇数存放到存到顺序表L2中,偶数存到顺序表L3中,编写main()进行测试。
- 已知顺序表L1,L2中数据由小到大有序,请用尽可能快的方法将L1与L2中的数据合并到L3中,使数据在L3中按升序排列。
- 假设顺序表la与lb分别存放两个整数集合,函数inter(seqlist *la,seqlist *lb,seqlist *lc)的功能是实现求顺序表la与lb的交集存放到顺序表lc中,请将函数补充完整.
- 请编写一个算法函数partion(sequence_list *L),尽可能快地将顺序表L中的所有奇数调整到表的左边,所有偶数调整到表的右边,并分析算法的时间复杂度。
实验1
/**********************************//*文件名称:lab1-01.c *//**********************************//*基于sequlist.h中定义的顺序表,编写算法函数reverse(sequence_list *L),实现顺序表的就地倒置。*/#include "sequlist1.h"/*请将本函数补充完整,并进行测试*/void reverse(sequence_list *L){ int i = 0, j = L -> size - 1; while(i < j) // 就地倒置,左右交换; { int temp = L -> a[i]; L -> a[i] = L -> a[j]; L -> a[j] = temp; i++, j--; // 向中间移动; }}int main(){ sequence_list L;/*定义顺序表*/ input(&L); /*输入测试用例*/ print(&L); /*输出原表*/ reverse(&L); /*顺序表倒置*/ print(&L); /*输出新表*/}
实验2
/**********************************//*文件名称:lab1_02.c *//**********************************//*编写一个算法函数void sprit( sequence_list *L1,sequence_list *L2,sequence_list *L3),将顺序表L1中的数据进行分类,奇数存放到存到顺序表L2中,偶数存到顺序表L3中,编写main()进行测试。*/#include "sequlist1.h"/*请将本函数补充完整,并进行测试*/void sprit(sequence_list *L1,sequence_list *L2,sequence_list *L3){ int i; initseqlist(L2); // 对L2,L3进行初始化; initseqlist(L3); for(i=0;i<L1->size;i++) { if(L1->a[i]%2==0) // 如果是偶数,存入L3; { L3->a[L3->size++]=L1->a[i]; }else{ // 如果是奇数,存入L2; L2->a[L2->size++]=L1->a[i]; } }}int main(){ sequence_list L1,L2,L3;/*定义三个顺序表*/ input(&L1); /*输入L1*/ sprit(&L1,&L2,&L3); /*对L1进行分类*/ print(&L1); /*输出L1、L2和L3*/ print(&L2); print(&L3);}<strong></strong>
实验3
/*已知顺序表L1,L2中数据由小到大有序,请用尽可能快的方法将L1与L2中的数据合并到L3中,使数据在L3中按升序排列。*/#include "sequlist1.h"/*请将本函数补充完整,并进行测试*/void merge(sequence_list *L1,sequence_list *L2,sequence_list *L3){ int i=0,j=0; initseqlist(L3); // 初始化L3; while(i<L1->size && j<L2->size) // 当两个表L1,L2都还有数据,便对第一个数据进行比较; { if(L1->a[i]<L2->a[j]) // L1的第一个数据较小,便将第一个数据放入L3中; L3->a[L3->size++]=L1->a[i++]; else L3->a[L3->size++]=L2->a[j++]; } while(i<L1->size) L3->a[L3->size++]=L1->a[i++]; // 最后两次操作,是确保两个表中数据最后都能够存入L3中; while(j<L2->size) L3->a[L3->size++]=L2->a[j++];}int main(){ sequence_list L1,L2,L3; input(&L1);/*输入时请输入有序数据*/ input(&L2);/*输入时请输入有序数据*/ merge(&L1,&L2,&L3);/*合并数据到L3*/ print(&L3);/*输出L3*/}<strong></strong>
实验4
/*假设顺序表la与lb分别存放两个整数集合,函数inter(seqlist *la,seqlist *lb,seqlist *lc)的功能是实现求顺序表la与lb的交集存放到顺序表lc中,请将函数补充完整. *//**********************************//*文件名称:lab1_04.c *//**********************************/#include "sequlist1.h"/*请将本函数补充完整,并进行测试*/void inter(sequence_list *la,sequence_list *lb,sequence_list *lc){ int i,j; initseqlist(lc); for(i=0;i<la->size;i++) // 遍历la,lb,用la中的每个数据比较,如果找到了相等的就存入lc; { for(j=0;j<lb->size;j++) { if(la->a[i]==lb->a[j]) { lc->a[lc->size++]=la->a[i]; break; // 找到了存入lc中之后就break,i++,如果不break,会假设lb中有多个数据,就会出现存入多次的现象; } } }}int main(){ sequence_list la,lb,lc; inputfromfile(&la,"1.txt"); /*从文件1.txt建立顺序表*/ inputfromfile(&lb,"2.txt");/*从文件2.txt建立顺序表*/ print(&la); /*输出la*/ print(&lb); /*输出lb*/ inter(&la,&lb,&lc); /*求la与lb的交集存于lc中*/ print(&lc); /*输出lc*/ return 0;}<strong></strong>
实验5
/*请编写一个算法函数partion(sequence_list *L),尽可能快地将顺序表L中的所有奇数调整到表的左边,所有偶数调整到表的右边,并分析算法的时间复杂度。*//**********************************//*文件名称:lab1_05.c *//**********************************/#include "sequlist1.h"/*请将本函数补充完整,并进行测试*/void partion(sequence_list *L){ // 时间复杂度为O(n); int i=0,j=L->size-1; while(i<j){ while(L->a[i]%2&&i<j) i++; // 从左边开始,如果L->a[i]是奇数;寻找下一个; while(L->a[j]%2==0&&i<j) j--; // 从右边开始,如果L->a[j]是偶数,寻找下一个; if(L->a[i]%2==0&&L->a[j]%2){ // 找到左边的偶数,右边的奇数,那么就进行交换; int temp=L->a[j]; L->a[j]=L->a[i]; L->a[i]=temp; } }}int main(){ sequence_list L; inputfromfile(&L,"3.txt"); print(&L); /*输出表L*/ partion(&L); print(&L); /*输出新表*/ return 0;}
时间仓促,先发第一章的实验。
2 0
- 实验1 线性表的顺序实现
- 数据结构实验1-线性表的顺序实现
- 实验一:线性表实验-顺序表的实现
- 实验一 线性表的顺序表示与实现
- 实验报告1—线性表的顺序结构
- 线性表的顺序存储实验程序
- 实验二 线性表实验之顺序表和单链表的实现
- 数据结构线性表的顺序实现1
- 线性表的顺序实现
- 线性表的顺序实现
- 线性表的顺序实现
- 线性表的顺序实现
- 线性表的顺序实现
- 顺序线性表的实现
- 线性表的顺序实现
- 线性顺序表的实现
- 线性表的顺序实现
- 《数据结构》实验二:线性表的实验(顺序表)
- android notification总结
- 关于多维数组一点的小技巧
- 2015-12-22
- Objective-C中的属性和实例变量
- (九十四)函数和二维数组
- 实验1 线性表的顺序实现
- IP数据包格式
- 2015年的倒数第10天新的一年就要开始了,加油,努力!
- system调用
- git 常用操作一览图
- 详细讲解Java反射机制
- 多态与虚函数编程题 #2(C++程序设计第6周)
- OpenCV中的Haar+Adaboost(二):积分图和45°旋转积分图
- (九十五)函数与C-风格字符串