正在加载图片...
# define LiStInitsize100线性表存储空间的初始分配量 type Elem Type *elem;∥数组指钍表示存储空间基址 当前长度 int listsize∥当前分配的存储容量(以 sizeof( Elem Type)为单位) Status ListInsert sq (Sqlist &v, int i, Elem Typex) ∥在线性表V中第i个元素之前插入x,i的合法值为1≤isⅤ Length+1 if(i<1‖i>Ⅴ length+1) return ERROR,/i值不合法 if( V length>Ⅴ listsize) return OVERFLoW,∥无存储空间 q=&Ⅴelem[-1l,/下行注:插入位置后的元素依次右移 for(p=&Velem[V length-1]; p>=q:--p *q=x,∥插入x ++ V length;,∥表长加1 return oK Status List Delete sq Elem Type x)( if (i<l l i>V length return ERROR: P=&velem[i-1 P q=Ⅴelem+Ⅴ length-1; for(++pp<=q;++p)*(p-1)=*p 2链式存储结构及插入删除运算 特点:用一组任意的存储单元可以是连续的也可以是不连续的)存放线性表的数据元素。 存储地址 数据域 指针域 头指针H WANG NLL ZHAO ZHENG ZHOU 上图为(ZHAO,QIAN,SUN,L,ZHOU,wU, ZHENG,wNG)4 #define LISTINITSIZE 100 //线性表存储空间的初始分配量 typedef struct{ ElemType *elem;//数组指针表示存储空间基址 int length; //当前长度 int listsize //当前分配的存储容量(以 sizeof(ElemType)为单位) }Sqlist Status ListInsert_sq(Sqlist V,int i , ElemType x) { //在线性表 V 中第 i 个元素之前插入 x, i 的合法值为 1 iV.Length+1 if(i<1‖i>V.length+1)return ERROR; //i 值不合法 if(V.length>V.listsize) return OVERFLOW; //无存储空间 q=V.elem[i-1]; //下行注:插入位置后的元素依次右移 for(p=V.elem[V.length-1]; p>=q; − −p) (p+1)= p; q=x; // 插入 x ++V.length; //表长加 1 return OK; } Status ListDelete_sq(Sqlist V,int i , ElemType x){ if(i<1‖i>V.length)return ERROR; P=V.elem[i-1]; x =P; q= V.elem+ V.length−1 ; for(++p;p<=q;++p) *(p−1)=*p − −V.length; return OK; } 2.链式存储结构及插入删除运算 特点:用一组任意的存储单元(可以是连续的,也可以是不连续的)存放线性表的数据元素。 上图为(ZHAO,QIAN,SUN,LI,ZHOU,WU,ZHENG,WANG)
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有