}
132345
12554567899
3请按任意键继续...
2线性表的链性表示#include"iostream"#include"malloc.h"usingnamespacestd;typedefstructLNode{
intdata;
structLNode*next;
}LNode,*LinkList;
intInitList(LinkList&L)
{
L=(LinkList)malloc(sizeof(LNode));L->next=NULL;
return1;
}
intListInsert(LinkList&L,inti,inte)
{
LinkListp=L;
intj=0;
while(p&&jnext;++j;
}
if(!
p||j>i-1)return0;
LinkLists=(LinkList)malloc(sizeof(LNode));s->data=e;
s->next=p->next;p->next=s;
return1;
}
intListDelete(LinkList&L,inti)
{
LinkListp=L;
intj=0;
while(p->next&&jnext;++j;
}
if(!
(p->next)||j>i-1)return0;
LinkListq=p->next;p->next=q->next;free(q);
return1;
}
intGetElem(LinkListL,inti)
{
LinkListp=L->next;
intj=1;
while(p&&j
{
p=p->next;
++j;
}
if(!
p||j
return0;
inte=p->data;returne;
}
intmain()
{
LinkListlx;
InitList(lx);
for(inti=1;i<6;i++){
ListInsert(lx,i,i);
}
ListDelete(lx,2);
for(intj=1;j<5;j++)
{
cout<LinkListlx1,lx2;
InitList(lx1);
InitList(lx2);
for(intm=1;m<6;m++){
ListInsert(lx1,m,m);
}
for(intn=1;n<6;n++){ListInsert(lx2,n,2*n);
}
for(intj=1;j<6;j++)
{
cout<}
1345
12345请按任意键继续...
3双向链表
#include"iostream"
#include"malloc.h"
usingnamespacestd;typedefstructdlist
{
intdata;
InitList(DLinkList&L)
structdlist*prior;structdlist*next;}DList,*DLinkList;void
sizeof(DList));
L=(DLinkList)malloc(
L->next=L;
L->prior=L;
return1;
}
intGetElem(DLinkList&L,inti)
{
DLinkListp,s;
p=L->next;
intj=1;
while(p&&jnext;
++j;
}
if(!
p||j>i)
return0;
inte=p->data;
returne;
}
intmain()
{
DLinkListlx;
InitList(lx);
for(inti=1;i<6;i++)
{ListInsert(lx,i,2*i-1);
}
for(intj=1;j<6;j++){cout<}
cout<inte;
ListDelete(lx,2,e);
cout<for(intj=1;j<5;j++){cout<}
system("pause");
return0;
}
13579
3
1579请按任意键继续...
4顺序栈
#include"iostream"
#include"malloc.h"
usingnamespacestd;
#defineSTACK_INIT_SIZE100〃存?
?
储?
?
e空?
间?
初?
始0?
分O?
配?
量C?
#defineSTACKINCREMENT10存?
?
储?
?
e空?
间?
分O?
配?
增?
量C?
typedefstruct{
int*base;
int*top;
intstacksize;
}Stack;
intInitStack(Stack&S)
{
S.base=(int*)malloc(STACK_INIT_SIZE*sizeof(int));
if(!
S.base)
exit(-2);
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return1;
}
intGetTop(Stack&S,int&e)
{
if(S.top==S.base)
return0;
e=*(S.top-1);
return1;
}
intPush(Stack&S,inte)
{
if(S.top-S.base>=S.stacksize){
S.base=(int*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int));if(!
S.base)
exit(-2);
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=e;
}
intPop(Stack&S,int&e)
{
if(S.top==S.base)
return0;
e=*--S.top;
return1;
}
intmain()
{
Stacklx;
InitStack(lx);
for(inti=1;i<6;i++)
{
Push(lx,i);
}inte;
GetTop(lx,e);cout<Pop(lx,e1);cout<GetTop(lx,e1);cout<}
5
5
4请按任意键继续...
5队列#include"iostream"#include"malloc.h"usingnamespacestd;typedefstructQNode{intdata;structQNode*next;
}QNode,*QueuePtr;
typedefstruct{
QueuePtrfront;
QueuePtrrear;
}LinkQueue;
intInitQueue(LinkQueue&Q){
Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));if(!
Q.front)
exit(-2);
Q.front->next=NULL;return1;
}
intDestroyQueue(LinkQueue&Q)
{
while(Q.front){Q.rear=Q.front->next;
free(Q.front);Q.front=Q.rear;
}return1;
}
intInsert(LinkQueue&Q,inte)
{
QueuePtrp=(QueuePtr)malloc(s