单链表的基本操作栈的基本操作Word文档下载推荐.docx
- 文档编号:21920451
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:13
- 大小:16.13KB
单链表的基本操作栈的基本操作Word文档下载推荐.docx
《单链表的基本操作栈的基本操作Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《单链表的基本操作栈的基本操作Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。
ElemTypedata;
structLNode*next;
};
typedefstructLNode*LinkList;
StatusInitList(LinkList*L)
*L=(LinkList)malloc(sizeof(structLNode));
if(!
*L)
exit(OVERFLOW);
(*L)->
next=NULL;
returnOK;
}
StatusClearList(LinkListL)
LinkListp,q;
p=L->
next;
while(p)
{
q=p->
free(p);
p=q;
}
L->
StatusListEmpty(LinkListL)
if(L->
next)
returnFALSE;
else
returnTRUE;
intListLength(LinkListL)
inti=0;
LinkListp=L->
i++;
p=p->
returni;
StatusGetElem(LinkListL,inti,ElemType*e)
intj=1;
while(p&
&
j<
i)
j++;
p||j>
returnERROR;
*e=p->
data;
StatusListInsert(LinkListL,inti,ElemTypee)
intj=0;
LinkListp=L,s;
i-1)
s=(LinkList)malloc(sizeof(structLNode));
s->
data=e;
next=p->
p->
next=s;
StatusListDelete(LinkListL,inti,ElemType*e)
LinkListp=L,q;
while(p->
next&
p->
next||j>
next=q->
*e=q->
free(q);
StatusListTraverse(LinkListL)
printf("
%d"
p->
data);
\n"
);
StatusDestroyList(LinkList*L)
LinkListq;
while(*L)
q=(*L)->
free(*L);
*L=q;
voidmain()
LinkListL;
ElemTypee;
Statusi;
intj;
i=InitList(&
L);
for(j=1;
=6;
j++)
{printf("
输入数字:
"
scanf("
&
e);
ListInsert(L,1,e);
printf("
%d\n"
ListEmpty(L));
GetElem(L,4,&
e);
查找单链表第3个元素:
%d\n"
e);
单链表的长度:
%d\n"
ListLength(L));
在第二位置之前插入数字:
ListInsert(L,2,e);
这个单链表是:
ListTraverse(L);
ListDelete(L,4,&
删除单链表第4个元素:
栈的基本操作
typedefintSElemType;
#defineSTACK_INIT_SIZE10
#defineSTACKINCREMENT2
#defineOVERFOLW-2
typedefstructSqStack
SElemType*base;
SElemType*top;
intstacksize;
}SqStack;
StatusInitStack(SqStack*S)
(*S).base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));
(*S).base)
exit(OVERFOLW);
(*S).top=(*S).base;
(*S).stacksize=STACK_INIT_SIZE;
StatusStackEmpty(SqStackS)
if(S.top==S.base)
StatusClearStack(SqStack*S)
intStackLength(SqStackS)
returnS.top-S.base;
StatusGetTop(SqStackS,SElemType*e)
if(S.top>
S.base)
*e=*(S.top-1);
StatusPush(SqStack*S,SElemTypee)
if((*S).top-(*S).base>
=(*S).stacksize)
(*S).base=(SElemType*)realloc((*S).base,((*S).stacksize+STACKINCREMENT)*sizeof(SElemType));
(*S).top=(*S).base+(*S).stacksize;
(*S).stacksize+=STACKINCREMENT;
*((*S).top)++=e;
StatusPop(SqStack*S,SElemType*e)
if((*S).top==(*S).base)
*e=*--(*S).top;
voidvisit(SElemTypee)
StatusStackTraverse(SqStackS,void(*visit)(SElemType))
while(S.top>
visit(*S.base++);
intmain()
inta;
SqStackS;
SElemTypex,e;
if(InitStack(&
S))//判断顺序表是否创建成功,请填空
AStackHasCreated.\n"
while
(1)
1:
Push\n2:
Pop\n3:
GettheTop\n4:
ReturntheLengthoftheStack\n5:
LoadtheStack\n0:
Exit\nPleasechoose:
a);
switch(a)
{
case1:
&
x);
if(!
Push(&
S,x))printf("
PushError!
//判断Push是否合法,请填空
elseprintf("
TheElement%disSuccessfullyPushed!
x);
break;
case2:
Pop(&
S,&
e))printf("
PopError!
//判断Pop是否合法,请填空
elseprintf("
TheElement%disSuccessfullyPoped!
e);
break;
case3:
GetTop(S,&
e))printf("
GetTopError!
//判断GetTop是否合法,请填空
TheTopElementis%d!
case4:
TheLengthoftheStackis%d!
StackLength(S));
//请填空
break;
case5:
StackTraverse(S,visit);
case0:
return1;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单链表 基本 操作
![提示](https://static.bdocx.com/images/bang_tan.gif)