C++数据结构实例代码 下载本文

1 线性表的顺序表示

#include\ #include\ usingnamespacestd; typedefstruct{

int *elem; int length; intlistsize;

}SqList;

intInit_Sq(SqList&L){ }

intListInsert(SqList&L,inti,int e){ }

intListDelete(SqList&L,inti,int&e){

if(i<1||i>L.length)

return 0;

int *p=&(L.elem[i-1]); e=*p;

int *q=L.elem+L.length-1; for(++p;p<=q;++p){

*(p-1)=*p; if(i<1||i>L.length+1) }

int *q=&(L.elem[i-1]); int *p=&(L.elem[L.length-1]); for(p;p>=q;--p){ } *q=e; ++L.length; return 1;

*(p+1)=*p; return 0;

int *newbase=(int *)realloc(L.elem,(L.listsize+10)*sizeof(int)); if(!newbase)

exit(-2); L.elem=newbase; L.listsize+=10; if(L.length>=L.listsize){

L.elem=(int *)malloc(100*sizeof(int)); if(!L.elem)

exit(-2); L.length=0; L.listsize=100; return 1;

}

}

--L.length; return e;

int main(){ }

int a[6]={1,2,3,4,5}; int *q=&a[1]; int *p=&a[4]; for(p;p>=q;--p){ } *q=3;

for(int i=0;i<6;i++){ }

cout<

for(int j=1;j<10;j++){ }

ListInsert(lx,3,55); inte_return;

ListDelete(lx,4,e_return); for(int m=0;m<10;m++){ }

cout<

cout<<*(lx.elem+m)<<\; ListInsert(lx,j,j); cout<

1 3 2 3 4 5

1 2 55 4 5 6 7 8 9 9 3请按任意键继续. . .

2 线性表的链性表示

#include\ #include\ usingnamespacestd; typedefstructLNode {

int data;

structLNode *next;

}LNode,*LinkList; intInitList(LinkList&L) { }

intListInsert(LinkList&L,inti,int e) { }

intListDelete(LinkList&L,int i) { }

intGetElem(LinkListL,int i) {

LinkList p=L->next; int j=1; while(p&&j

while(p->next&&j

if(!(p->next)||j>i-1)

return 0; LinkList q=p->next; p->next=q->next; free(q); return 1;

p=p->next; ++j; LinkList p=L; int j=0;

while(p&&j

if(!p||j>i-1)

return 0;

LinkList s=(LinkList)malloc(sizeof(LNode)); s->data=e; s->next=p->next; p->next=s; return 1;

p=p->next; ++j;

L=(LinkList)malloc(sizeof(LNode)); L->next=NULL; return 1;