第三周项目1-顺序表的基本运算
来源:互联网 发布:光电材料仿真软件 编辑:程序博客网 时间:2024/05/16 19:49
问题及代码:
/**Copyright (c) 2014,烟台大学计算机学院*All rights reserved.*文件名称:顺序表的基本运算*作者:李子伦*完成日期:2015年9月18日**问题描述:实现顺序表基本运算有算法(对应视频0204创建线性表的实现和0205顺序表基本运算的实现),依据“最小化”的原则进行测试。所谓最小化原则,指的是利用尽可能少的基本运算,组成一个程序,并设计main函数完成测试*输入描述:线性表*程序输出:测试结果*/代码(1)
#include<stdio.h>#include<malloc.h>#define MaxSize 50 //Maxsize将用于后面定义存储空间的大小typedef int ElemType; ////ElemType在不同场合可以根据问题的需要确定,在此取简单的inttypedef struct{ ElemType data[MaxSize]; int length;} SqList;void CreateList(SqList *&L, ElemType a[], int n);void DispList(SqList *L);bool ListEmpty(SqList *L);int ListLength(SqList *L);int LocateElem(SqList *L, ElemType e); bool GetElem(SqList *L,int i,ElemType &e); int main(){ SqList *sq; ElemType x[6]= {5,8,7,2,4,9};ElemType a; CreateList(sq, x, 6); DispList(sq);printf("表长度%d\n",ListLength(sq));printf("查找线性表中的第三个元素%d\n",LocateElem(sq, 3)); 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"); return 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");}bool ListEmpty(SqList *L) //判断链表是否存在{ return(L->length==0);}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;}int ListLength(SqList *L) //求线性表长度{return(L->length);}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;}bool GetElem(SqList *L, int i, ElemType &e) //查找某个元素并输出真假{ if (i<1 || i>L->length) return false; e=L->data[i-1]; return true;}
代码(2)
#include<stdio.h>#include<malloc.h>#define MaxSize 50 //Maxsize将用于后面定义存储空间的大小typedef int ElemType; ////ElemType在不同场合可以根据问题的需要确定,在此取简单的inttypedef struct{ ElemType data[MaxSize]; int length;} SqList;void CreateList(SqList *&L, ElemType a[], int n);void DispList(SqList *L);bool ListEmpty(SqList *L);int ListLength(SqList *L);int LocateElem(SqList *L, ElemType e);bool GetElem(SqList *L,int i,ElemType &e);void DestroyList(SqList *&L);void InitList(SqList *&L);bool ListInsert(SqList *&L, int i, ElemType e);int main(){ SqList *sq; InitList(sq); ListInsert(sq, 1, 5); ListInsert(sq, 2, 3); ListInsert(sq, 1, 4); DispList(sq); return 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");}void DestroyList(SqList *&L) //销毁线性表{free(L);}bool ListInsert(SqList *&L, int i, ElemType e) //插入线性表{int j;if(i<1 || i>L->length+1)return false;i--;for(j=L->length;j>i;j--) //将date[i]及后面的元素后移一个位置L->data[j]=L->data[j-1];L->data[i]=e; L->length++;return true;}void InitList(SqList *&L) //初始化线性表{ L=(SqList *)malloc(sizeof(SqList)); L->length=0;}
运行结果:
代码(1)
代码(2)
知识点总结:
本次项目考察了对线性表算法的实践,并用测试函数实现了对算法的一一检验,同时,对指针的引用是新引入的知识点,目的是为了i大大减少了需要存储的空间。
心得体会:
在实际操作中会遇到很多之前没有遇到的问题,如函数操作时要注意编码规范一一对齐,在CODEBLOCKS编译中注意在创建项目是选择C++,这都是今后需要注意的问题。
0 0
- 第三周项目1-顺序表的基本运算
- 第三周项目(1):顺序表的基本运算
- 第三周实践项目1-顺序表的基本运算
- 第三周—项目1 顺序表的基本运算
- 第三周 项目1 - 顺序表的基本运算
- 第三周项目1顺序表的基本运算
- 第三周 项目1-顺序表的基本运算
- (第三周项目1)顺序表的基本运算
- 第三周项目1 顺序表的基本运算
- 第三周 项目1-顺序表的基本运算
- 第三周项目1-顺序表的基本运算
- 第三周项目1-顺序表的基本运算
- 第三周项目1 顺序表的基本运算(2)
- 第三周【项目1 - 顺序表的基本运算】
- 第三周 项目1-顺序表的基本运算
- 第三周项目1顺序表的基本运算2
- 第三周项目1-顺序表的基本运算
- 第三周项目1—顺序表的基本运算
- 外网访问本机IP发布的项目解决方案
- java基础
- Objective-C之run loop详解
- 华为面试题 输入一个n,在屏幕上输出N*N的矩阵
- 数组和集合拾遗
- 第三周项目1-顺序表的基本运算
- [java语言]java的多维数组的copy
- poj 2001(trie)
- Java并发编程:如何创建线程
- android 禁止listview 的ITEM被点击
- select ... for update& lock in share mode加锁情况
- Android 状态栏沉浸式的实现
- Centos 安装五笔
- 分享一个Swift语言的逆波兰表达式计算器的实现