数据结构与算法实验一

您所在的位置:网站首页 算法与数据结构图实验报告 数据结构与算法实验一

数据结构与算法实验一

2023-09-15 14:45| 来源: 网络整理| 查看: 265

第一章 实验目的

1.掌握线性表的顺序存储结构的表示和实现方法。 2.掌握顺序表基本操作的算法实现。 3.了解顺序表的应用。

第二章 实验环境

硬件环境要求: PC机(单机) 使用的软件名称、版本号以及模块: DEV C++、VS2010等。

第三章 实验内容

编写一个程序,实现顺序表的各种基本运算(假设顺序表的元素类型为char),并在此基础上设计一个主程序完成如下功能: (1)初始化顺序表L; (2)依次采用尾插法插入a、b、c、d、e元素; (3)输出顺序表L; (4)输出顺序表L的长度; (5)判断顺序表L是否为空; (6)输出顺序表L的第3个元素; (7)输出元素a的位置 (8)在第4个元素位置上插入f元素 (9)输出顺序表L; (10)删除L的第3个元素; (11)输出顺序表L; (12)释放顺序表L。

第四章 实验步骤 #include #include #include #define M 10 typedef char datatype; typedef struct { datatype data[M]; int len; }SeqList; SeqList *init_SeqList() //初始化顺序表 { SeqList *L; L=(SeqList*)malloc(sizeof(SeqList)); L->len=0; return L; } void Free(SeqList *L) //删除线性表 { free(L); printf("Have free!"); } int Listempty(SeqList *L) //判断线性表是否为空 { return (L->len==0); } int Listlen(SeqList *L) //输出顺序表长度 { return (L->len); } int Getelem(SeqList *L,int i,datatype &x) //求线性表中按位置查找某个元素的值 { if (iL->len) { printf("Place is wrong!\n"); return 0; } x = L->data[i-1]; } int Locateelem(SeqList *L, datatype x) //按元素值查找 { int i = 0; //从头开始查找 while (ilen && L->data[i]!=x) i++; if (i>L->len) { printf("Not Found!\n"); return 0; } else return i+1; } int Insertlist(SeqList *L,int i,datatype x) //顺序表插入元素 { int j; if(L->len==M-1) { printf("full!\n"); return -1; } if(i(L->len+1)) { printf("place is wrong!\n"); return 0; } for (j=L->len;j>=i;j--) L->data[j+1]=L->data[j]; L->data[i]=x; L->len++; printf("在%d位置已插入%c\n",i,x); } int Listdelete(SeqList *L,int i,datatype &x) //按照位置删除数据元素 { int j; if(iL->len) { printf("Place is wrong!\n"); return 0; } i--; x = L->data[i]; for(j=i;jlen;j++) L->data[j] = L->data[j+1]; L->len--; printf("Have deletad!\n"); } int output(SeqList *L) //输出顺序表 { int i; if (Listempty(L)) { printf("empty!\n"); return 0; } for(i=0;ilen;i++) printf("%c ",L->data[i]); printf("\n"); } int main() //主函数 { SeqList *L; datatype x; int i; printf("(1)初始化顺序表L\n"); L=init_SeqList(); printf("(2)依次采用尾插法插入a b c d e元素\n"); Insertlist(L,1,'a'); Insertlist(L,1,'b'); Insertlist(L,1,'c'); Insertlist(L,1,'d'); Insertlist(L,1,'e'); printf("(3)输出顺序表\n"); output(L); printf("(4)顺序表长度 = %d\n",Listlen(L)); printf("(5)判断顺序表是否为空: "); if (Listempty(L)) printf("空\n"); else printf("非空\n"); Getelem(L,3,x); printf("(6)顺序表第3个元素是 = %c\n",x); printf("(7)元素a的位置是 = %d\n",Locateelem(L,'a')); printf("(8)在第4位置上插入f元素\n"); Insertlist(L,4,'f'); printf("(9)输出顺序表L;\n"); output(L); printf("(10)删除L的第3个元素\n"); Listdelete(L,3,x); printf("(11)输出顺序表L:\n"); output(L); printf("(12)释放顺序表L\n"); Free(L); return 0; }

第五章实验要求 1、用DEV C++、VS2010等工具创建文件或程序,输入代码后,进行编译运行或在控制台执行。 2、观看程序运行结果,并根据结果进行思考,对程序进行修改和总结。 实验结果: 在这里插入图片描述

这个程序大概有140多行,实际上就是由许多功能函数组成起来的。在编写过程中,重要的是函数之间的调用过程和数据之间的来回调用容易混淆。 再者容易出错的地方就是逻辑编号与L->len之间的加加减减。比如说删除第3个元素。逻辑编号为2,L->len减一。 最后,什么是尾插法和头插法不是很理解。耗时较长。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3