数据结构 线性表 线性实现 c++ 源代码
2017-11-26 14:33
411 查看
1.头文件 声明和宏定义
#include <stdlib.h> #include <malloc.h> #define ElemType int #define OK 1 #define ERROR 0 typedef int Status;
2.结构体声明
typedef struct SqList { ElemType* data; int listSize; int len; }SqList,*pSqList;
3.类和方法的声明
#define LIST_MAX_SIZE 100 #define LIST_INCREMENT 10 class CSqList { public: CSqList(); ~CSqList(); void CreateList_L(SqList& L); Status AppendElem_L(SqList& L, ElemType &e); Status GetElem_L(SqList& L,int i, ElemType &e); Status ListInsert_L(SqList& L,int i, ElemType &e); Status ListDelete_L(SqList& L,int i, ElemType &e); void DestroyList_L(SqList& L); };
4.类的方法实现
CSqList::CSqList(){ } CSqList::~CSqList(){ } void CSqList::CreateList_L(SqList& L) { L.data = (ElemType*)malloc(LIST_MAX_SIZE*sizeof(SqList)); L.len = 0; L.listSize = LIST_MAX_SIZE; } Status CSqList::AppendElem_L(SqList& L, ElemType &e){ if (L.len>=L.listSize) { ElemType* q = (ElemType*)realloc(L.data,(L.listSize+LIST_INCREMENT)*sizeof(ElemType)); if (!q) return ERROR; L.data = q; L.listSize +=LIST_INCREMENT; } L.data[L.len++] = e; } Status CSqList::GetElem_L(SqList& L,int i, ElemType &e){ if (i>L.len) return ERROR; e=L.data[i-1]; return OK; } Status CSqList::ListInsert_L(SqList& L,int i, ElemType &e){ if (L.len>=L.listSize) { ElemType* q = (ElemType*)realloc(L.data,(L.listSize+LIST_INCREMENT)*sizeof(ElemType)); if (!q) return ERROR; L.data = q; L.listSize +=LIST_INCREMENT; } for (int k=L.len;k>=i;k--) L.data[k] = L.data[k-1];//*p = *--p; L.data[i-1] = e; L.len++; } Status CSqList::ListDelete_L(SqList& L,int i, ElemType &e){ if (i>L.len) { return ERROR; } e=L.data[i-1]; for (int k=i-1;k<L.len;) L.data[k] = L.data[++k]; L.len--; } void CSqList::DestroyList_L(SqList& L){ free(L.data); L.len=0; L.listSize=0; }
5.测试
int _tmain(int argc, _TCHAR* argv[]){ CSqList cSqList; SqList sq; cSqList.CreateList_L(sq); int i=0; while(i++<10) cSqList.AppendElem_L(sq,i); int e = 999; cSqList.ListInsert_L(sq,5,e); i=1; while(i<=sq.len){ cSqList.GetElem_L(sq,i,e); printf("%d:%d\n",i++,e); } cSqList.ListDelete_L(sq,6,e); printf("delete:%d",e); cSqList.DestroyList_L(sq); getchar(); }
相关文章推荐
- 数据结构 线性表 链式 c++源代码 实现
- 【源代码】C++实现严蔚敏数据结构所有算法(一)线性表-顺序表
- 【算法和数据结构】线性表(一)线性表(C++实现)
- 《数据结构——C++实现》(第二版)课本源代码 缪淮扣 沈俊 顾训穰 编著
- 数据结构——线性表——链式存储结构——C++实现线性表
- 【数据结构】双向循环线性表的基本操作--C++/C实现
- 【算法和数据结构】线性表(四)用两个栈来实现队列(C++实现)
- 数据结构 栈 c++ 源代码实现
- 数据结构(6)线性表之链表C++实现交集
- 数据结构 第二章 线性表(1)顺序线性表的实现
- 数据结构(12)线性表之C++实现一元多项式相加
- c/c++ 数据结构-线性表(单链表基本操作的实现)
- C++实现数据结构线性表顺序存储结构
- 顺序存储线性表的C++实现——严蔚敏版《数据结构》
- 数据结构--线性表 算法函数的实现(实现线性表的插入操作)
- c/c++ 数据结构-线性表(链式表示&实现&单链表定义&实现)
- 数据结构和算法 C/C++ Java 和 C# 版 - (2)线性表 精准表述 实现
- 【C++数据结构学习笔记---线性表】用数组实现线性表
- 【C语言版数据结构】线性表的链式表示,并且实现合并两个非递减有序排列到新的线性表
- 数据结构--线性表 算法函数的实现(实现线性表的删除操作)