数据结构—线性表
2016-03-10 16:41
405 查看
线性表示一种最简单的线性结构,线性的主要操作特点是可以在任意位置插入和删除一个数据元素。
线性表:顺序存储结构,链式存储结构;
顺序存储结构:实现的链表称为顺序表;
链式催促结构:实现的链表称为链表—>”单链表,循环单链表和双向循环链表”;
数据集合
线性表的数据集合可以表示为a0,a1,……an-1,类型为DataType;
操作集合
首先定义结构体Seqlist:
其中DataType为数组的数据类型,MaxSize表示数组元素的最大个数,list表示数组名,size表示顺序表当前存储的数据元素个数,且满足条件size<=Maxsize,Seqlist是结构体名。
(1).初始化ListInitiate(L)
(2)求当前数据元素个数ListLength(L)
(3)插入数据元素个数ListInsert(L,i,x)
(4)删除数据元素ListDelete(L,i,x)
(5)取数据元素ListGet(L,i,x)
线性表:顺序存储结构,链式存储结构;
顺序存储结构:实现的链表称为顺序表;
链式催促结构:实现的链表称为链表—>”单链表,循环单链表和双向循环链表”;
1.线性表的抽象数据类型
抽象数据类型是指一个逻辑概念上的类型和这个类型上的操作集合,而类型是一组值得集合。因此线性表的抽象数据类型主要包括:数据集合和数据集合上的操作集合数据集合
线性表的数据集合可以表示为a0,a1,……an-1,类型为DataType;
操作集合
首先定义结构体Seqlist:
typedef struct { DataType list[MaxSize]; int size; }Seqlist;
其中DataType为数组的数据类型,MaxSize表示数组元素的最大个数,list表示数组名,size表示顺序表当前存储的数据元素个数,且满足条件size<=Maxsize,Seqlist是结构体名。
(1).初始化ListInitiate(L)
void ListInitiate(Seqlist *L) //初始化顺序表L { L->size=0; //定义初始数据元素个数,指针类型可以返回值 }
(2)求当前数据元素个数ListLength(L)
int listLength(SeqList L) //返回顺序表L的当前数据元素个数 { return L.size; }
(3)插入数据元素个数ListInsert(L,i,x)
int ListInsert(Seqlist *L,int i,DataType x)//在顺序表L的第i(0<=i<=size)个位置插入数据元素x { //插入成功返回1,失败返回0; int j; if(L->size>=Maxsize) { printf("顺序表已满,无法插入!\n"); return 0; } else if(i<0||i>L->size) { printf("参数i不合法!\n"); return 0; } else { for(j=L->size;j>i;j--)//从后往前依次后移数据,为插入做准备 { L->List[j]=L->List[j-1]; } L->List[i]=x; //插入x L->size++; //元素个数加1 return 1; } }
(4)删除数据元素ListDelete(L,i,x)
int ListDelete(Seqlist *L,int i,Datatype *x) { int j; if(L->size<=0) { printf("顺序表已空,无数据可以删!\n"); return 0; } else if(i<0||i>L->size-1) { printf("参数i不合法!\n"); return 0; } else { *x=L->List[i]; for(j=i+1;j<=L->size-1;j++) { L->List[j-1]=L->List[j]; } L->size--; return 1; } }
(5)取数据元素ListGet(L,i,x)
int ListGet(SeqList L,int i,DataType *x) //取顺序表L中的第i个元素存于x中,成功返回1,失败返回0 { if(i<0||i>L->size-1) { printf("参数i不合法!\n"); return 0; } else { *x=L.list[i]; return 1; } }
相关文章推荐
- 数据结构与算法Javascript描述(四)双向链表
- 类(class)和结构(structure)的认识
- 数据结构与算法Javascript描述(三)链表
- [数据结构-后缀数组小结]
- [数据结构-hash]CF 7D Palindrome Degree
- 数据结构—绪论
- 数据结构与算法Javascript描述(二)队列
- 【c++版数据结构】单链表复习之常见面试题型1
- 数据结构与算法Javascript描述(一)栈
- 数据结构
- nginx源码初读(11)--让烦恼从数据结构开始(ngx_command/ngx_module/ngx_conf)
- Zookeeper - 介绍篇(2)
- 单链表排序之选择排序
- 数据结构——队列
- 【数据结构课程大作业】通信录管理系统
- 【数据结构课程大作业】通信录管理系统
- Tair缓存系统学习 (数据结构存储系统)
- 数据结构 第二章 线性表(3)顺序线性表合并
- 数据结构和算法 (二)数据结构基础之树、二叉树
- 数据结构和算法 (二)数据结构基础、线性表、栈和队列、数组和字符串