本文共 1669 字,大约阅读时间需要 5 分钟。
线性表中数据元素的逻辑关系是:元素在计算机中物理位置相邻(逻辑上相邻的元素在物理位置上也是相邻的)
线性表的顺序存储结构是一种随机存取的储存结构,但是在进行删除和插入的是需要移动大量的元素。
#include#include #include #define LIST_INIT_SIZE 100#define LISTINSERCE 10using namespace std;typedef int Elemtype ;struct SqList{ int *element; int len; int listsize;};///位置合法性判断///长度的改变int InitList(SqList &L);void Sscanf(SqList &L);int ListInsert(SqList &L,int pos,Elemtype e);bool ListDelete(SqList &L,int pos);int LocateElem(SqList L,Elemtype e);void MergeList_Sq(SqList La,SqList Lb,SqList &Lc);void Print(SqList La);int main(){ SqList La; InitList(La); Sscanf(La); Print(La); ListInsert(La,4,99999); Print(La); cout<<"*******"< L.len) return false; int *newbase; if(L.len>=L.listsize) { ///注意重新分配时的表示方法 // newbase=(Elemtype *)realloc(L.element,(L.listsize+LISTINSERCE)*sizeof(Elemtype)); // if(!newbase) return false; // L.element=newbase; L.element=(Elemtype *)realloc(L.element,(L.listsize+LISTINSERCE)*sizeof(Elemtype)); if(!L.element) return false; L.listsize+=LISTINSERCE; } ///两种方式 /* for(int i=L.len-1; i>=pos-1; i--) L.element[i+1]=L.element[i]; L.element[pos-1]=e;*/ Elemtype *p=&(L.element[pos-1]); for(Elemtype *q=&(L.element[L.len-1]); q>=p; q--) *(q+1)=*(q); *p=e; ++L.len; return true;}///删除一个位置///首先进行位置合法性判断,如果位置不合法,则返回false;///将所删除位置之后的元素向前移一位///线性表长度--;bool ListDelete(SqList &L,int pos){ int temp=pos-1; if(temp<0||temp>=L.len) return false; if(!L.element) return false; Elemtype *p=&(L.element[pos-1]); // e=*p; Elemtype *q=&(L.element[L.len-1]); for(p; p
转载地址:http://kfgsi.baihongyu.com/