线性表顺序存储(C++ 实现)
来源:互联网 发布:2017最火的网络电视剧 编辑:程序博客网 时间:2024/06/07 20:02
/********************************************************************created:2014/12/18created:18:12:2014 9:49filename: D:\visual studio 2012\Projects\List\List\list.hfile path:D:\visual studio 2012\Projects\List\Listfile base:listfile ext:hauthor:HanLuopurpose:线性表优点:无需为表中的元素逻辑关系而增加额外的存储空间 可以快速存取表中的任一位置的元素缺点:插入和删除操作需要移动大量元素 容易造成存储空间的碎片 存储空间的容量,不好确定。*********************************************************************/#ifndef _LIST_H_#define _LIST_H_/************************************************************************//*采用数组存储链表的第一个元素,数组【0】 第二个, 数组【1】 第三个, 数组【2】 ...*//************************************************************************/enum Status{FALSE = 0,TRUE = 1,};#define MAXSIZE 20typedef int ElemType;//typedef struct//{//ElemType data[MAXSIZE];// 数组存储数据元素//int length;// 线性表当前长度//}SqList;class SqList{public:// 初始化操作 建立一个空的线性表Status InitList(SqList *List);// 判断线性表是不是为空,为空返回true,否则返回falseStatus ListEmpty(SqList List);// 清空线性表Status ClearList(SqList *List);// 在线性表中查找与给定值相等的元素int LocateElem(SqList List, ElemType val);// 返回线性表的元素个数int ListLength(SqList list);// 得到i位置的元素 时间复杂度为O(1)Status GetElem (SqList L, int i, ElemType *val);// 插入操作 时间复杂度为O(n)Status ListInsert( SqList *L, int i, ElemType val);// 删除操作 时间复杂度为O(n)Status ListDelete( SqList *L, int i, ElemType *type);private:ElemType data[MAXSIZE];// 线性表的容量int length;// 线性表当前长度};#endif
#include "list.h"//////////////////////////////////////////////////////////////////////////Status SqList::InitList(SqList *List){List->length = 0;return TRUE;}//////////////////////////////////////////////////////////////////////////Status SqList::ListEmpty(SqList List){if(List.length == 0)return TRUE;elsereturn FALSE;}//////////////////////////////////////////////////////////////////////////Status SqList::ClearList(SqList *List){List->length = 0;return TRUE;}//////////////////////////////////////////////////////////////////////////Status SqList::GetElem(SqList L, int i, ElemType *e){if(L.length == 0 || i<1 || i > L.length)return FALSE;*e = L.data[i - 1];return TRUE;}//////////////////////////////////////////////////////////////////////////int SqList::ListLength(SqList list){return list.length;}///////////////////////////////////////////////////////////////////////////* 初始条件:顺序线性表L已存在 *//* 操作结果:返回L中第1个与e满足关系的数据元素的位序。 *//* 若这样的数据元素不存在,则返回值为0 */int SqList::LocateElem(SqList list, ElemType val){int i;if( list.length == 0)return FALSE;for(int i = 0; i < list.length; i++){if(list.data[i] == val)break;// 找到元素 不再循环 }if(i >= list.length)return FALSE;return i+1;}//////////////////////////////////////////////////////////////////////////Status SqList::ListInsert(SqList *List, int i, ElemType e){int k; if( List->length == MAXSIZE)// 顺序线性表已经满了return FALSE;if(i < 1 || i > List->length + 1)// 当i不再范围内的时候return FALSE;// 先判断插入的数据不在表尾if( i <= List->length ){for( k = List->length; k >= i - 1; k--) // 将要插入位置后数据元素向后移动一位List->data[k+1] = List->data[k];}List->data[i - 1] = e;List->length++;return TRUE;}//////////////////////////////////////////////////////////////////////////Status SqList::ListDelete(SqList *List, int i, ElemType* type){int k;if( List->length == 0)// 如果表为空 返回错误return FALSE;if( i < 1 || i > List->length)// 删除的位置不正确return FALSE;*type = List->data[i - 1];// 链表的元素,放在数组 -1 的位置if( i < List->length ){for( k = i; k < List->length; k++){List->data[k-1] = List->data[k]; }}List->length--;return TRUE;}
0 0
- 线性表顺序存储--C实现
- 线性表(顺序存储)C语言实现
- 线性表的顺序存储结构(C语言实现)
- 线性表顺序存储(C++ 实现)
- 线性表---顺序存储实现
- 线性表顺序存储实现
- 顺序存储结构线性表的C语言实现
- 线性表之顺序存储结构--C实现
- 线性表之顺序存储结构--C实现
- 线性表之顺序存储结构--C实现
- 线性表之顺序存储结构--C实现
- 用C语言实现线性表的顺序存储结构
- C语言实现线性表之顺序存储结构操作
- 线性表顺序存储结构的c语言实现
- 线性表的顺序存储结构的c语言实现
- 线性表之顺序存储结构--C实现
- C语言实现一般线性表的顺序存储
- 线性表顺序存储-使用c语言实现
- android 绑定sim卡
- awk的学习
- 请说出三种减少页面加载时间的方法。(加载时间指感知的时间或者实际加载时间)
- RobotFramework+Selenium视频教程
- 初识Block
- 线性表顺序存储(C++ 实现)
- Andrew Ng机器学习笔记(一):梯度下降法
- addChildViewController
- 小技巧
- 微信智能排号系统,哈林电子会员卡软件 微信智能排队系统 微排队系统源码
- 数组和链表的区别
- 程序员的四个阶段
- 如何制作U盘启动盘
- css3 背景渐变