线性表--顺序表(自建顺序表算法库)
来源:互联网 发布:质量好的冬装淘宝店 编辑:程序博客网 时间:2024/06/05 21:05
/*
*Copyright (c) 2015 烟台大学计算机与控制工程学院
*All right reserved.
*文件名称:list.cpp
*writer:罗海员
*date:2015年9月10日
*版本:V1.0.1
*
*问题描述:测试“建立线性表”的算法CreateList
*输入描述:判断表是否为空,实现判断表是否为空的算法ListEmpty。
*算法库包括两个文件:
头文件:list.h,包含定义顺序表数据结构的代码、宏定义、要实现算法的函数的声明;
源文件:list.cpp,包含实现各种算法的函数的定义
*程序输出:需要实现“输出线性表”的算法DisList
*/
--list.h
//包含定义顺序表数据结构的代码、宏定义、要实现算法的函数的声明
#ifndef LIST_H_INCLUDED#define LIST_H_INCLUDED#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);//用数组创建线性表void InitList(SqList *&L);//初始化线性表InitList(L)void DestroyList(SqList *&L);//销毁线性表DestroyList(L)bool ListEmpty(SqList *L);//判定是否为空表ListEmpty(L)int ListLength(SqList *L);//求线性表的长度ListLength(L)void DispList(SqList *L);//输出线性表DispList(L)bool GetElem(SqList *L,int i,ElemType &e);//求某个数据元素值GetElem(L,i,e)int LocateElem(SqList *L, ElemType e);//按元素值查找LocateElem(L,e)bool ListInsert(SqList *&L,int i,ElemType e);//插入数据元素ListInsert(L,i,e)bool ListDelete(SqList *&L,int i,ElemType &e);//删除数据元素ListDelete(L,i,e)#endif // LIST_H_INCLUDED#endif
--list.cpp
//包含实现各种算法的函数的定义
//创建线性表 初始化线性表InitList(L) 销毁线性表DestroyList(L) 判定是否为空表ListEmpty(L)
//求线性表的长度ListLength(L) 输出线性表DispList(L) 求某个数据元素值GetElem(L,i,e)
//按元素值查找LocateElem(L,e) 插入数据元素ListInsert(L,i,e) 删除数据元素ListDelete(L,i,e)
#include <stdio.h>#include <malloc.h>#include "list.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;}//初始化线性表InitList(L)void InitList(SqList *&L) //引用型指针{ L=(SqList *)malloc(sizeof(SqList)); //分配存放线性表的空间 L->length=0;}//销毁线性表DestroyList(L)void DestroyList(SqList *&L){ free(L);}//判定是否为空表ListEmpty(L)bool ListEmpty(SqList *L){ return(L->length==0);}//求线性表的长度ListLength(L)int ListLength(SqList *L){ return(L->length);}//输出线性表DispList(L)void DispList(SqList *L){ int i; if (ListEmpty(L)) return; for (i=0; i<L->length; i++) printf("%d ",L->data[i]); printf("\n");}//求某个数据元素值GetElem(L,i,e)bool GetElem(SqList *L,int i,ElemType &e){ if (i<1 || i>L->length) return false; e=L->data[i-1]; return true;}//按元素值查找LocateElem(L,e)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;}//插入数据元素ListInsert(L,i,e)bool ListInsert(SqList *&L,int i,ElemType e){ int j; if (i<1 || i>L->length+1) return false; //参数错误时返回false i--; //将顺序表逻辑序号转化为物理序号 for (j=L->length; j>i; j--) //将data[i..n]元素后移一个位置 L->data[j]=L->data[j-1]; L->data[i]=e; //插入元素e L->length++; //顺序表长度增1 return true; //成功插入返回true}//删除数据元素ListDelete(L,i,e)bool ListDelete(SqList *&L,int i,ElemType &e){ int j; if (i<1 || i>L->length) //参数错误时返回false return false; i--; //将顺序表逻辑序号转化为物理序号 e=L->data[i]; for (j=i; j<L->length-1; j++) //将data[i..n-1]元素前移 L->data[j]=L->data[j+1]; L->length--; //顺序表长度减1 return true; //成功删除返回true}
--main.cpp
//用于测试程序的实现
int main(){ SqList *sq; ElemType x[6]= {5,8,7,2,4,9}; CreateList(sq, x, 6); DispList(sq); return 0;}
1 0
- 线性表--顺序表(自建顺序表算法库)
- 数据结构之自建算法库——顺序表
- 数据结构之自建算法库——顺序表
- 数据结构第三周项目-自建顺序表算法库
- 结构算法 001 线性表的顺序存储--顺序表
- 线性表顺序表归并算法
- 数据结构 算法、线性表、顺序表
- 线性表(顺序表)
- 顺序线性表的基本操作算法
- 顺序线性表(一)
- 线性表线性(顺序)存储结构
- 线性表-顺序表
- 线性表--- 顺序表
- 线性表顺序表
- 线性表->顺序表
- 线性表- 顺序表
- 线性表--顺序表
- 线性表---顺序表
- 第二周项目1—C/C++语言中函数参数传递的三种方式
- [leetcode][Binary Search] First Bad Version
- 剑指Offer系列---(18)反转链表(递归与非递归实现)
- 注明的div+img 的3px bug
- 第2周项目1 C/C++语言中函数参数传递的三种方式
- 线性表--顺序表(自建顺序表算法库)
- ImageSpan的使用
- IP地址,子网掩码,默认网关,DNS服务器详解
- 短信验证码自动填写
- 第二周项目3-程序的多文件组织
- Android 转场动画 windowAnimation和ActivityAnimation的区别
- OC 内存管理
- 连连看第一更
- MySQL MyISAM/InnoDB