大话数据结构Word文档下载推荐.docx
《大话数据结构Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《大话数据结构Word文档下载推荐.docx(35页珍藏版)》请在冰豆网上搜索。
#defineOK1
#defineERROR0
#defineTRUE1
#defineFALSE0
typedefintElemType;
typedefintStatus;
//函数类型,其值是函数结果状态代码,如OK等
typedefstructStackNode{
ElemTypedata;
//数据域
structStackNode*next;
//直接后继指针
}StackNode,*LinkStackPtr;
typedefstructLinkStack{
LinkStackPtrtop;
//栈顶指针
intcount;
//栈元素个数
}LinkStack;
StatusInitStack(LinkStack*L);
//建立一个空的栈S
StatusStackEmpty(LinkStackL);
//若栈为空,返回TRUE,否则返回FALSE
StatusClearStack(LinkStack*L);
//将栈清空
intStackLength(LinkStackL);
//返回栈S的元素个数
StatusDisplayStack(LinkStackL);
//输出栈S的所有元素
StatusGetTop(LinkStackL,ElemType*e);
//用e返回栈S的栈顶元素
StatusLocateElem(LinkStackL,ElemTypee);
//在栈S中查找是否存在与给定值e相等的元素
StatusPush(LinkStack*L,ElemTypee);
//在栈S中插入新元素e
StatusPop(LinkStack*L,ElemType*e);
//删除栈S的栈顶元素,并将该元素值赋给e
intmain(void)
{
LinkStacka;
ElemType*p,e=0;
inti;
InitStack(&
a);
//建立一个空的栈
for(i=0;
i<
MAXSIZE;
i++)
{
Push(&
a,i+1);
}
DisplayStack(a);
for(i=1;
StackLength(a);
i+=2)
Pop(&
a,&
e);
printf("
e=%d\n"
e);
e=50;
if(LocateElem(a,e))//在栈S中查找是否存在与给定值e相等的元素
printf("
存在%d\n"
else
不存在%d\n"
a,e);
ClearStack(&
//将栈清空
return0;
}
函数功能:
建立一个空的栈S
初始条件:
无
操作结果:
初始化栈S。
操作成功返回OK,否则返回ERROR
StatusInitStack(LinkStack*S)
S->
top=NULL;
count=0;
returnOK;
}
判断栈是否为空
链栈S已经存在
若栈为空,返回TRUE,否则返回FALSE
StatusStackEmpty(LinkStackS)
return(S.top==NULL)?
TRUE:
FALSE;
将栈清空
将栈清空。
StatusClearStack(LinkStack*S)
LinkStackPtrp;
if(S==NULL)
returnERROR;
while(S->
top)
p=S->
top;
S->
top=p->
next;
free(p);
返回栈S的元素个数
intStackLength(LinkStackS)
returnS.count;
输出栈S的所有元素
输出栈S的所有元素。
StatusDisplayStack(LinkStackS)
inti=0;
LinkStackPtrp=S.top;
if(S.top==NULL)
none!
\n"
);
while(p)
data[%d]=%d,"
i++,p->
data);
p=p->
用e返回栈S的栈顶元素
用e返回栈S的栈顶元素。
StatusGetTop(LinkStackS,ElemType*e)
*e=S.top->
data;
在栈S中查找是否存在与给定值e相等的元素
在栈S中查找是否存在与给定值e相等的元素。
找到返回TRUE,否则返回FALSE
StatusLocateElem(LinkStackS,ElemTypee)
if(p->
data==e)
returnTRUE;
returnFALSE;
在栈S中插入新元素e
在栈S中插入新元素e。
StatusPush(LinkStack*S,ElemTypee)
LinkStackPtrp=(LinkStackPtr)malloc(sizeof(StackNode));
if(!
p)
Outofspace!
"
p->
data=e;
next=S->
top=p;
count++;
删除栈S的栈顶元素,并将该元素值赋给e
删除栈S的栈顶元素,并将该元素值赋给e。
StatusPop(LinkStack*S,ElemType*e)
LinkStackPtrp=S->
if(S->
top==NULL)
*e=S->
top->
top=S->
free(p);
count--;
《大话数据结构》读书笔记之线性表基本操作(数组实现)
线性表抽象数据类型(使用数组实现)
08-09-1414:
38
typedefstruct{
ElemTypedata[MAXSIZE];
//数组存储线性表元素
intlength;
//线性表元素个数,即线性表长度
}SqList;
StatusInitList(SqList*L);
//建立一个空的线性表L
StatusListEmpty(SqListL);
//若线性表为空,返回TRUE,否则返回FALSE
StatusClearList(SqList*L);
//将线性表清空
intListLength(SqListL);
//返回线性表L的元素个数
StatusDisplayList(SqListL);
//输出线性表L的所有元素
StatusGetElem(SqListL,inti,ElemT