数据结构实验——基于数组表的实验
2017-04-20 16:19
543 查看
实验内容
1.编写程序实现顺序表的下列基本操作: (1) 初始化顺序表La。 (2) 在顺序表中插入元素形成表[ 10 20 30 40 50],并输出表。 (3) 删除表中第3个元素,并输出表 (4) 删除元素40,并输出表 (5)在La中查找某元素,若找到,则返回它在La中第一次出现的位置,否则返回0。 (6)打印输出La中的元素值。 2.编写程序完成下面的操作: (1)构造两个顺序线性表La和Lb,其元素都按值非递减顺序排列。 (2)实现归并La和Lb得到新的顺序表Lc,Lc的元素也按值非递减顺序排列。
定义结构体
typedef struct { int data[maxSize];//表的数据 int length;//表的长度,从1开始 }seqlist;
声明所需函数
// 通过索引将数据插入到指定位置 void insertContentByIndex (seqlist *list,int content,int index); // 在表尾插入数据,类似于堆栈的push方法 void insertContent (seqlist *list,int content); // 通过索引删除表中的数据 void deleteByIndex (seqlist *list,int index); // 通过内容删除表中的数据 void deleteByContent (seqlist *list,int content); // 找出表中第一次出现content的索引 int findFirstContentToIndex (seqlist *list,int content); // 打印表的数据data void printList (seqlist *list);
主函数实现指定功能
int main () { seqlist La; La.length = 0; // 在顺序表中插入元素形成表[ 10 20 30 40 50],并输出表。 insertContent(&La , 10); insertContent(&La , 20); insertContent(&La , 30); insertContent(&La , 40); insertContent(&La , 40); insertContent(&La , 50); printList(&La); // 删除表中第3个元素,并输出表 deleteByIndex(&La , 3); printList(&La); // 删除元素40,并输出表 deleteByContent(&La , 50); printList(&La); insertContentByIndex(&La , 80 , 3); printList(&La); /*在La中查找某元素,若找到,则返回它在La中第一次出现的位置,否则返回0。*/ findFirstContentToIndex(&La , 50); return 0; }
程序源代码
// 基于数组的表实验 #include <stdio.h> #define maxSize 10 typedef struct { int data[maxSize]; int length; }seqlist; void insertContentByIndex (seqlist *list,int content,int index); void insertContent (seqlist *list,int content); void deleteByIndex (seqlist *list,int index); void deleteByContent (seqlist *list,int content); int findFirstContentToIndex (seqlist *list,int content); void printList (seqlist *list); int main () { seqlist La; La.length = 0; insertContent(&La , 10); insertContent(&La , 20); insertContent(&La , 30); insertContent(&La , 40); insertContent(&La , 40); insertContent(&La , 50); printList(&La); deleteByIndex(&La , 3); printList(&La); deleteByContent(&La , 50); printList(&La); insertContentByIndex(&La , 80 , 3); printList(&La); findFirstContentToIndex(&La , 50); return 0; } void insertContentByIndex (seqlist *list,int content,int index) { if (index > maxSize && list->length >= maxSize) { printf("超出表的限定范围\n"); return; } int i = list->length; for ( ;i >= index; i--) { list->data[i] = list->data[i-1]; } list->data[index-1] = content; list->length ++; printf("数据%d 插入在%d 成功\n",content,index); } void insertContent (seqlist *list,int content) { if(list->length >= maxSize) { printf("表已经满了,无法插入新数据\n"); return; } list->data[list->length] = content; list->length ++; printf("数据%d\tpush成功\n",content); } void deleteByIndex (seqlist *list,int index) { int i = index - 1 ; int content = list->data[index-1]; for (; i < list->length - 1; i++) { list->data[i] = list->data[i+1]; } list->length --; printf("数据%d删除成功\n",content); } void deleteByContent (seqlist *list,int content) { int i = 0; while(i<list->length) { if (list->data[i] == content){ deleteByIndex(list,i+1); }else{ i++; } } /*表发生相应改变,无法进行后续的删除 for (i=0 ; i<list->length ; i++) { if (list->data[i] == content) { deleteContent(list,i+1); // 删除第一个后,表发生了改变,无法删除第二个相同的元素 } } */ } int findFirstContentToIndex (seqlist *list,int content) { int i; for (i=0 ; i<list->length ; i++) { if (list->data[i] == content) { printf("该数据第一次出现在表中第%d个位置\n",i+1); return i+1; } } printf("没有找到该数据%d\n",content); return 0; } void printList(seqlist *list) { int i; printf("表内容为:\t"); for (i = 0; i < list->length; i++) { printf("%d\t",list->data[i]); } printf("\n"); }
运行结果
相关文章推荐
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历(数组)
- 数据结构实验一:基于线性表的学生信息管理(顺序结构)
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 数据结构实验图论:基于邻接矩阵/邻接表的广度优先搜索遍历
- 寒假第三天--栈和队列--数据结构实验之栈四:括号匹配 (数组)
- 【2142】数据结构实验之图论二:基于邻接表的广度优先搜索遍历 (SDUT)
- 数据结构实验一:基于线性表的学生信息管理(顺序结构)
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- 【数据结构实验】二叉树的遍历(数组版)
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- SDUT_2015寒假集训_BFS&DFS_A-数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- SDUT 2412 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历
- SDUTOJ 2142 数据结构实验图论一:基于邻接表的广度优先搜索遍历
- 【2142】数据结构实验之图论二:基于邻接表的广度优先搜索遍历 (SDUT)
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历 (BFS)
- 数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历