前言:
这几天在学习数据结构,引用书中的一句话:数据结构 = 程序 + 算法;本篇博客作为一个知识的总结,希望给大家带来帮助.
核心 :
线性表定义
从字面意义来看,呈线性,所以说,它是一种线性结构,现在我们来看书中的定义:线性表是由n(n>=0)个数据元素组成的有穷序列.
线性表特征
- 一对一的关系
- 若结点不为0,除了起始结点没有直接前驱外,其他每个结点有且仅有一个直接前驱,
- 除了终端结点没有直接后继外,其他每个结点有且仅有一个直接后继..
线性表的顺序存储
插入:
void InsertSeqlist(SeqList L,DataType x,int i){ //将元素x插入到顺序表L的第i个数据元素之前 if(L.length == Maxsize) exit("表已满"); if(i < 1 || i > L.length + 1) exit("位置错")//检查插入位置是否合法 for (j = L.length; j >= i;j--) //初始化i = L.length L.data[j] = L.data[j-1]; //依次向后移 L.data[i-1] = x; // 元素x置入到下标为i - 1的位置 L.length++; //表长度加1 }
删除:
void DeleteSeqlist(SeqList L,int i){ //删除线性表L中的第i个数据结点 if(i < 1 || i > L.length + 1) exit("位置错")//检查插入位置是否合法 for (j = i,j < L.length;j++) //第i个元素的下标i-1 L.data[j-1] = L.data[j]; //依次向左移 L.length--; //表长度减1 }
定位:
void LocateSeqlist(SeqList L,DataType x){ int i = 0; while((i <L.length) && (L.data[i]!=x)) //在顺序表中查找值为x的结点 i++; if( i < L.length ) return i + 1; //若找到值为x的元素,返回元素的序号 else return 0; //未查找到值为x的元素,返回0 }
总结:
在总结中进步,不断成长!