1、 /当前长度 int listsize; /当前分配的存储容量(以sizeof(ElemType)为单位)SqList;Status InitList_Sq(SqList &L) /构造一个空的线性表L L.elem =(ElemType * )malloc(list_init_size*sizeof(ElemType); if(!L.elem )exit(OVERFLOW);/存储分配失败 L.length =0; /空表长度为0 L.listsize =list_init_size;/初始存储容量 return OK;/Initlist_SqStatus ListInsert_Sq(SqL
2、ist &L,int i,ElemType e) /在顺序线性表L中第i个位置之前插入新的元素e, /i的合法值为1=i=ListLength_Sq(L)+1 ElemType *p,*q,*newbase; /定义指针 if(iL.length +1) return ERROR; /i值不合法 if(L.length =L.listsize ) /当前存储空间已满,增加分配 newbase=(ElemType * )realloc(L.elem ,(L.listsize +LISTINCREMENT)*sizeof(ElemType); if(!newbase)exit(OVERFLOW);
3、 /存储分配失败 L.elem =newbase; /新基址 L.listsize +=LISTINCREMENT; /增加存储容量 q=&(L.elem i-1); /q为插入位置 for(p=&(L.elem L.length -1);p=q;-p) *(p+1)=*p; /插入位置及之后的元素右移 *q=e; /插入e +L.length ; /表长增1/ListInsert_SqStatus ListDelete_Sq(SqList &L,int i,ElemType &e) /在顺序线性表L中删除第i个元素,并用e返回其值=ListLength_Sq(L) ElemType *p,*
4、q; if(iL.length ) p=& /p为被删除元素的位置 e=*p; /被删除元素的值赋给e q=L.elem +L.length -1; /表尾元素的位置 for(+p;p+p) *(p-1)=*p; /被删除元素之后的元素左移 -L.length ; /表长减1/ListDelete_sqvoid display(SqList L) /定义for循环函数 int i; for(i=0;i=L.length -1;i+) printf(%dn,L.elem i);int LocateElem_Sq(SqList L,ElemType e) /在顺序线性表L中查找第1个值与e满足co
5、mpare()的元素的位序 /若找到,则返回其在L中的位序,否则返回0 ElemType *p; int i=1; /i的初值为第一个元素的位序 p=L.elem ; /p的初值为第一个元素的存储位置 while(i=L.length & *p+!=e) +i;=L.length) return i; else return 0;/LocateElem_Sqvoid MergeList_Sq(SqList La,SqList Lb,SqList &Lc ) /已知顺序线性表La和Lb的元素按值非递减排列 /归并La和Lb得到新的顺序线性表Lc,Lc的元素也按非递减排列 ElemType *pa
6、,*pb,*pc,*pa_last,*pb_last; pa=La.elem ; pb=Lb.elem ; Lc.listsize =Lc.length =La.length +Lb.length ; pc=Lc.elem =(ElemType *)malloc(Lc.listsize *sizeof(ElemType);Lc.elem )exit(OVERFLOW); pa_last=La.elem +La.length -1; pb_last=Lb.elem +Lb.length -1; while(pa=pa_last & pb=pb_last) /归并 if(*pa=*pb) *pc+
7、=*pa+; else *pc+=*pb+;=pa_last) *pc+=*pa+; /插入La的剩余元素 while(pbnext; int j=1; /初始化,p指向第一个结点,j为计数器 while(p&j +j;p|j /第i个元素不存在 e=p-data; /取第i个元素/GetElem_LStatus ListInsert_L(LinkList &L,int i,ElemType e) /在带头结点的单链线性表L中第i个位置之前插入元素e LinkList p,s; p=L; int j=0;i-1) /寻找第i-1个结点i-1) return ERROR; /i小于或者大于表长+1 s=(LinkList)malloc(sizeof(LNode); /生成新结点 s-data=e;next=p- /插入L中 p-next=s;/ListInsert_LStatus ListDelete_L(LinkList & /在带头结点的单链线性表L中,删除第i个元素,并由e返回其值 LinkList p,q; while(p-next& /寻找第i个结点,并令p指向其前趋+j;(p-next)|j /
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1