第三周——顺序表的基本运算
来源:互联网 发布:手机淘宝装修日记 编辑:程序博客网 时间:2024/06/05 07:48
问题及代码:
/*2015,烟台大学计算机与控制工程学院 *作者:桑立 *完成时间:2015年9月14日 *问题描述:(1)目的是要测试“建立线性表”的算法CreateList,为查看建表的结果,需要实现“输出线性表”的算法DispList。在研习DispList中发现,要输出线性表,还要判断表是否为空,这样,实现判断线性表是否为空的算法ListEmpty成为必要。这样,再加上main函数,这个程序由4个函数构成。main函数用于写测试相关的代码。 程序的结构如下所示:#include <....> //必要的库文件包括#define ... //必要的宏定义//声明实现算法的自定义函数,以及其他必要的自定义函数//定义用于驱动测试的main函数int mian(){ return 0;}//定义各个自定义函数1 若在上面的指导性提示基础上还难于下手,请到课程主页,找到相关链接,观摩后再做。 切记:(1)无从下手时,要找到参考,这是要“借力”;(2)找到参考,并未解决问题,观摩之后,丢开参考,自行完成,这是根本的目标。用这样的“抄之有道”,抄来的在心里,最终的成果,来自你的心中、脑中和手中。 (2)在已经创建线性表的基础上,求线性表的长度ListLength、求线性表L中指定位置的某个数据元素GetElem、查找元素LocateElem的算法都可以实现了。就在原程序的基础上增加: ?增加求线性表的长度ListLength的函数并测试; ?增加求线性表L中指定位置的某个数据元素GetElem的函数并测试; ?增加查找元素LocateElem的函数并测试; (3)其余的4个基本运算:插入数据元素ListInsert、删除数据元素ListDelete、初始化线性表InitList、销毁线性表DestroyList都可以同法完成,请自行安排实践路线。 *输入描述:无 *输出描述:线性表的长度,某个元素的位置,查找某个元素*/
(1)头文件
#include <stdio.h>#include <malloc.h>#define maxSize 50typedef int ElemType;typedef struct{ElemType data[maxSize];int length;}SqList;void CreateList(SqList *&L,ElemType a[],int n);//创建线性表bool ListEmpty(SqList *L);//判断线性表是否为空void DispList(SqList *L);//输出线性表int ListLength(SqList *L);//求线性表的长度bool GetElem(SqList *L,int i,ElemType &e);//求线性表中某个数据元素的值int LocateElem(SqList *L,ElemType e);//按元素值查找
(2)源文件—:
#include "touwenjian.h"//建立顺序表void CreateList(SqList *&L,ElemType a[],int n){int i;L=(SqList *)malloc(sizeof(SqList));for(i=0;i<n;i++)L->data[i]=a[i];L->length=n;}//判断线性表是否为空表bool ListEmpty(SqList *L){return (L->length==0);}//输出线性表void DispList(SqList *L){int i;if(ListEmpty(L))return ;for(i=0;i<L->length;i++)printf("%d ",L->data[i]);printf("\n");}//求线性表的长度int ListLength(SqList *L){return(L->length);}//求线性表L中指定位置的某个数据元素bool GetElem(SqList *L,int i,ElemType &e){if(i<1||i>L->length)return false;e=L->data[i-1];return true;}//查找元素int LocateElem(SqList *L,ElemType e){int i=0;while(i<L->length&&L->data[i]!=e)i++;if(i>=L->length)return 0;else return i+1;}
(3)源程序二:
#include "touwenjian.h"int main(){ SqList *sq; ElemType x[6]= {1,2,3,4,5,6}; ElemType a; int loc; CreateList(sq, x, 6); DispList(sq); printf("表长度:%d\n", ListLength(sq)); //测试求长度 if(GetElem(sq, 3, a)) //测试在范围内的情形 printf("找到了第3个元素值为:%d\n", a); else printf("第3个元素超出范围!\n"); if(GetElem(sq, 15, a)) //测试不在范围内的情形 printf("找到了第15个元素值为:%d\n", a); else printf("第15个元素超出范围!\n"); if((loc=LocateElem(sq, 2))>0) //测试能找到的情形 printf("找到了,值为8的元素是第 %d 个\n", loc); else printf("值为8的元素木有找到!\n"); if((loc=LocateElem(sq, 17))>0) //测试不能找到的情形 printf("找到了,值为17的元素是第 %d 个\n", loc); else printf("值为17的元素木有找到!\n"); return 0;}
运行结果:
知识点总结:
通过对线性表的顺序存储结构的学习,掌握了顺序表基本运算的实现,也了解了对指针的引用。
学习心得:
对顺序的基本运算的实现,掌握的不好,还须多多上机实践。
0 0
- 第三周——顺序表的基本运算
- 第三周——顺序表的基本运算
- 第三周——顺序表的基本运算
- 第三周—项目1 顺序表的基本运算
- 第三周项目1—顺序表的基本运算
- 第三周—项目1顺序表的基本运算
- 第三周项目1—顺序表的基本运算
- 第三周项目1—顺序表的基本运算
- 第三周项目1—顺序表的基本运算
- 第三周—项目1-顺序表的基本运算
- 第三周--顺序表的基本运算
- 第三周 --顺序表 的基本运算
- 第三周 --顺序表 的基本运算
- 第三周 顺序表的基本运算
- 第三周 --顺序表 的基本运算
- 第三周 顺序表的基本运算
- 第三周 项目1的程序——顺序表的基本运算
- 第三周——项目一—顺序表的基本运算(1)
- Mac OS X: 系统nvram启动参数
- (转帖)HashMap的读写并发 脏读 脏数据
- java解析xml的几种方式 SAX解析
- 嵌入式中 volatile 用法
- 通过管道执行cmd命令
- 第三周——顺序表的基本运算
- 一切正常的项目不能运行的解决办法
- Spring 3 MVC and RSS feed example
- 如何发布自己的webservice
- HDU--1232畅通工程
- 第二周-项目3-汉诺塔
- C++Primer第五版 4.11.3节练习
- Java字符串首字母大写-高效方法
- 插入排序