大话数据结构.docx
- 文档编号:2125802
- 上传时间:2022-10-27
- 格式:DOCX
- 页数:35
- 大小:24.20KB
大话数据结构.docx
《大话数据结构.docx》由会员分享,可在线阅读,更多相关《大话数据结构.docx(35页珍藏版)》请在冰豆网上搜索。
大话数据结构
《大话数据结构》读书笔记之栈抽象数据类型(链表实现)
/*
Name:
栈抽象数据类型(使用链表实现)
Copyright:
Author:
巧若拙
Date:
13-09-1419:
02
Description:
*/
#include
#include
#include
#include
#defineMAXSIZE10
#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 { Push(&a,i+1);//在栈S中插入新元素e } DisplayStack(a); for(i=1;i { Pop(&a,&e);//删除栈S的栈顶元素,并将该元素值赋给e } printf("e=%d\n",e); DisplayStack(a); e=50; if(LocateElem(a,e))//在栈S中查找是否存在与给定值e相等的元素 { printf("存在%d\n",e); } else { printf("不存在%d\n",e); Push(&a,e);//在栈S中插入新元素e } DisplayStack(a); ClearStack(&a);//将栈清空 DisplayStack(a); return0; } /* 函数功能: 建立一个空的栈S 初始条件: 无 操作结果: 初始化栈S。 操作成功返回OK,否则返回ERROR */ StatusInitStack(LinkStack*S) { S->top=NULL; S->count=0; returnOK; } /* 函数功能: 判断栈是否为空 初始条件: 链栈S已经存在 操作结果: 若栈为空,返回TRUE,否则返回FALSE */ StatusStackEmpty(LinkStackS) { return(S.top==NULL)? TRUE: FALSE; } /* 函数功能: 将栈清空 初始条件: 链栈S已经存在 操作结果: 将栈清空。 操作成功返回OK,否则返回ERROR */ StatusClearStack(LinkStack*S) { LinkStackPtrp; if(S==NULL) { returnERROR; } while(S->top) { p=S->top; S->top=p->next; free(p); } S->count=0; returnOK; } /* 函数功能: 返回栈S的元素个数 初始条件: 链栈S已经存在 操作结果: 返回栈S的元素个数 */ intStackLength(LinkStackS) { returnS.count; } /* 函数功能: 输出栈S的所有元素 初始条件: 链栈S已经存在 操作结果: 输出栈S的所有元素。 操作成功返回OK,否则返回ERROR */ StatusDisplayStack(LinkStackS) { inti=0; LinkStackPtrp=S.top; if(S.top==NULL) { printf("none! \n"); returnERROR; } while(p) { printf("data[%d]=%d,",i++,p->data); p=p->next; } printf("\n"); returnOK; } /* 函数功能: 用e返回栈S的栈顶元素 初始条件: 链栈S已经存在 操作结果: 用e返回栈S的栈顶元素。 操作成功返回OK,否则返回ERROR */ StatusGetTop(LinkStackS,ElemType*e) { if(S.top==NULL) { returnERROR; } *e=S.top->data; returnOK; } /* 函数功能: 在栈S中查找是否存在与给定值e相等的元素 初始条件: 链栈S已经存在 操作结果: 在栈S中查找是否存在与给定值e相等的元素。 找到返回TRUE,否则返回FALSE */ StatusLocateElem(LinkStackS,ElemTypee) { LinkStackPtrp=S.top; while(p) { if(p->data==e) { returnTRUE; } p=p->next; } returnFALSE; } /* 函数功能: 在栈S中插入新元素e 初始条件: 链栈S已经存在 操作结果: 在栈S中插入新元素e。 操作成功返回OK,否则返回ERROR */ StatusPush(LinkStack*S,ElemTypee) { LinkStackPtrp=(LinkStackPtr)malloc(sizeof(StackNode)); if(! p) { printf("Outofspace! "); returnERROR; } p->data=e; p->next=S->top; S->top=p; S->count++; returnOK; } /* 函数功能: 删除栈S的栈顶元素,并将该元素值赋给e 初始条件: 链栈S已经存在 操作结果: 删除栈S的栈顶元素,并将该元素值赋给e。 操作成功返回OK,否则返回ERROR */ StatusPop(LinkStack*S,ElemType*e) { LinkStackPtrp=S->top; if(S->top==NULL) { returnERROR; } *e=S->top->data; S->top=S->top->next; free(p); S->count--; returnOK; } 《大话数据结构》读书笔记之线性表基本操作(数组实现) /* Name: 线性表抽象数据类型(使用数组实现) Copyright: Author: 巧若拙 Date: 08-09-1414: 38 Description: */ #include #include #include #include #defineMAXSIZE10 #defineOK1 #defineERROR0 #defineTRUE1 #defineFALSE0 typedefintElemType; typedefintStatus;//函数类型,其值是函数结果状态代码,如OK等 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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大话 数据结构