介绍前言
一、顺序表
1,定义
2,初始化构建
3,插入操作
1,算法解释
2,算法实现
4,删除操作
1,算法解释
2,算法实现
5,合并操作
1,算法解释
2,算法实现
本篇文章给大家分享的是有关在C和c++中如何使用线性表,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
前言
线性表包括两部分顺序表和链表,是数据结构的基础,在此主要就算法进行分析和总结,作为记忆了解,未做具体实现。
提示:以下是本篇文章正文内容、下面案例可供参考
一、顺序表
# define LISST_INIT_SIZE 100 #定义LISTINCREMENT 10 #定义好的0 #定义溢出1 typedef int ElemType; typedef int地位;
1,定义
typedef struct { int * elem;//定义存储基地址 int长度;//当前顺序表长度 int listsize;//当前分配的大小 }SqList;
2,初始化构建
状态InitList_Sq (SqList, l) { lelem=(ElemType *) malloc (LISST_INIT_SIZE * sizeof (ElemType)); 如果(! L.elem) 退出(溢出); L.length=0; L.listsize=LISST_INIT_SIZE; 返回OK;
3,插入操作
在第我的位置插入元素e
1,算法解释
- <李>检查我的合法性李> <李>检查储存空间李> <李>标记插入位置李> <>李将插入位置后面的元素依次向下移动一位(注意从后往前依次移动,以移动位置小于插入位置结束循环)
李,>
2,算法实现
状态LIstInsert_Sq (Sqlist, L, int i, ElemType e) { SqList * newbase * p *问;//在我第个位子插入元素e 如果(i<1 | | i> L.length + 1) 返回错误;//分配存储空间 如果(L.length> L.listsize) { newbase=(ElemType *) realloc (l。elem (Listsize + LISTINCREMENT) * sizeof (ELemType); 如果(! newbase) 退出(溢出); L.elem=newbase; L.listsize +=LISTINCREMENT; }//记录插入位置 q=, L.elem(张); (p=L.elem[长度是1];q<=p, p——) { * (p + 1)=* p } * p=e; L.length + +,//更新表长 还好; }
4,删除操作
在第我的位置插入元素e
1,算法解释
- <李>检查我的合法性李> <>李记录删除的位子李> <>李找到删除元素并赋值给e 李> <李>被删除元素后面的元素都想上移动一位(找到表尾元素,以移动位子地址大于表尾地址结束循环)
李,>
2,算法实现
状态LIstDelete_Sq (Sqlist, L, int i, ElemType, e) { SqList * p *问;//在我第个位子删除元素 如果(i<1 | | i> L.length + 1) 返回错误;//记录删除位置 p=, L.elem(张); e=* p;//表尾元素 q=, L.elem [L.length-1]; (+ + p;术中;=问;p + +) { * (p - 1)=* p; } L.length——;//更新表长 还好; }
5,合并操作
已知拉和磅的元素按照非递减的顺序排列归并为Lc也为按值非递减排列
1,算法解释
- <李>记录,磅的操作地址李> <>李计算Lc的长度并为其分配空间李> <>李记录,磅的表尾位置李> <>李合并——比较两个表的元素,值较小的存入Lc(注意:以任意一表完全存入Lc结束循环)李> <李>检查,磅是否还有剩余元素,如果有剩余依次存入Lc
李,>
2,算法实现
空白MergeList_Sq (SqList La SqList磅,SqList, Lc) {//分别记录,磅的当前操作地址 SqList *, * pb, * pc, * pa_last, * pb_last; pa=La.elem; pb=Lb.elem; Lc.listsize=La.length + Lb.length; 电脑=Lc。elem=(ElemType *) mallod (Lc.listsize * sizeof (ElemType); 如果(pc) { 退出(溢出);//分配失败 }//记录顺序表尾的地址 pa_last=La.elem + La.length-1; pb_last=Lb.elem + Lb.length-1; 而(pa二,链表
#定义好的0 #定义溢出1 typedef int ElemType; typedef int地位;1。单链表
1,定义
typedef int ElemType; typedef struct LNode { ElemType日期; struct LNode *下; }LNode * LinkList;2,插入
在带头结点L中的第i个位置之前插入e
在C和c++中如何使用线性表