数据结构-线性表的顺序存储
2017-09-17 19:56
295 查看
目标效果:
数据结构老师让做的线性表的顺序存储结构例子,但是我感觉老师的代码太复杂并且太乱。原项目有三个页面,分别为dsp0201.cpp,sqlist.h,ds.h,但是ds.h页面主要统一定义了读写方法,因此我去掉了该页面,另外两个页面我也将代码简化处理,去掉些不重要的功能及语句,方便以后自己和同学复习查阅。
dsp0210.cpp页面:(main函数所在页面,调用基本的分配空间,添加数据,删除数据等方法)
sqlist.h页面:(定义基本的添加删除方法)
源码:点击打开链接
数据结构老师让做的线性表的顺序存储结构例子,但是我感觉老师的代码太复杂并且太乱。原项目有三个页面,分别为dsp0201.cpp,sqlist.h,ds.h,但是ds.h页面主要统一定义了读写方法,因此我去掉了该页面,另外两个页面我也将代码简化处理,去掉些不重要的功能及语句,方便以后自己和同学复习查阅。
dsp0210.cpp页面:(main函数所在页面,调用基本的分配空间,添加数据,删除数据等方法)
#include <stdio.h> #include <stdlib.h> #define ElemType int //数据元素的类型 #include "sqlist.h" //打印顺序表内容 void PrintLinkList(SqList L); void read(int& e); int main() { SqList L; //初始化顺序表 InitList(L); //添加数据 ListInsert(L,1,12); ListInsert(L,1,23); ListInsert(L,1,34); ListInsert(L,1,45); //打印顺序表信息 printf("\n开始时顺序表内容\n"); PrintLinkList(L); printf("ListLength(L) : %d\n", ListLength(L)); printf("ListEmpty(L) : %d\n", ListEmpty(L)); //4)顺序表插入 printf("\n请输入一个元素:"); ElemType x; scanf("%d", &x); printf("插入开头:"); ListInsert(L,1,x); PrintLinkList(L); printf("插入末尾:"); ListInsert(L,ListLength(L)+1,x); PrintLinkList(L); //5)顺序表删除 printf("\n请选择删除第i(1..%d)个元素:", ListLength(L)); int i; scanf("%d", &i); ElemType e; ListDelete(L,i,e); printf("顺序表内容:"); PrintLinkList(L); //6)元素定位 printf("\n请输入一个元素以便定位:"); scanf("%d", &x); i = LocateElem(L,x); if ( i!=0 ) { printf("该元素是表中的第%d个元素.\n",i); } else printf("该元素在表中不存在.\n"); printf("\n最后顺序表内容\n"); PrintLinkList(L); printf("ListLength(L) : %d\n", ListLength(L)); printf("ListEmpty(L) : %d\n", ListEmpty(L)); system("PAUSE"); return 0; } //打印顺序表内容 void PrintLinkList(SqList L) { for(int i=0;i<L.length;i++) { printf("%d\t",L.elem[i]); } printf("\n"); }
sqlist.h页面:(定义基本的添加删除方法)
#ifndef ElemType #define ElemType int /* 数据元素类型默认为 int */ #define ELEMTYPE_TAG #endif /********************************************************** * 顺序表的存储结构定义 ***********************************************************/ #define LIST_INIT_SIZE 100 /* 存储空间初始分配容量 */ #define LISTINCREMENT 10 /* 存储空间分配的增量 */ typedef struct { ElemType *elem; //存储空间基址 int length; //当前长度 int listsize; //当前已分配的存储空间(元素个数) } SqList; /********************************************************** * 顺序表的基本操作的实现 ***********************************************************/ //创建并初始化为空表 void InitList(SqList &L) { L.elem=(ElemType *)malloc(sizeof(ElemType)*LIST_INIT_SIZE); L.length=0; L.listsize=LIST_INIT_SIZE; } //判断表L是否为空表 bool ListEmpty(SqList L) { if(L.elem!=NULL) return false; else return true; } //求表L的长度 int ListLength(SqList L) { return L.length; } //在表L中定位元素e首次出现的位置. 操作成功返回位序,失败时返回0 int LocateElem(SqList L, ElemType e) { for (int j=0; j<L.length; j++) if ( e==L.elem[j] ) return j+1; return 0; } //在表L中插入第i个元素e. 操作成功返回OK,失败时返回ERROR void ListInsert(SqList &L, int i, ElemType e) { if(i<1||i>L.length+1) printf("插入位置非法\n"); else{ int j; for(j=L.length;j>=i;j--) { L.elem[j]=L.elem[j-1]; } L.elem[j]=e; L.length++; } } //删除表L中第i个元素,结果用e返回. 操作成功返回OK,失败时返回ERROR void ListDelete(SqList &L, int i, ElemType &e) { if(i<1||i>L.length) printf("删除位置非法\n"); else { int j; for(j=i-1;j<L.length;j++) { L.elem[j]=L.elem[j+1]; } L.length--; } }
源码:点击打开链接
相关文章推荐
- 数据结构:线性表(顺序存储)顺序栈类(实现创建,输出,入栈出栈,读栈顶元素功能)
- [SDUT](1130)数据结构上机测试1:顺序表的应用 ---顺序存储(线性表)
- java实现数据结构中线性表的顺序存储
- 线性表的顺序存储实现(陈越数据结构版)
- 数据结构:线性表的顺序存储--Java实现
- 【数据结构】线性表的顺序存储完整程序
- 线性表-顺序存储(Java数据结构)
- 【数据结构】对于线性表的顺序和链接两种存储方式的主要优缺点
- 数据结构入门学习系列-3(线性表的顺序存储)
- C/C++ 数据结构---线性顺序存储数据:查询快,增删慢
- #1:数据结构:线性表 - 顺序存储类型;
- 数据结构-线性表的顺序存储实现及各种操作代码
- Java数据结构——线性表的顺序存储实现
- 数据结构 线性表的顺序存储
- 数据结构例程——线性表顺序存储的应用
- 数据结构之线性表代码实现顺序存储,链式存储,静态链表(选自大话数据结构)
- 数据结构例程——线性表顺序存储的应用
- 数据结构之线性表的顺序存储
- 数据结构学习笔记-线性表顺序存储(C语言实现)
- 数据结构:线性表的顺序存储