bo3-1-1.c 链栈(存储结构由c2-2.h定义)的基本操作(4个) 及验证
来源:互联网 发布:孙杨 兴奋剂 知乎 编辑:程序博客网 时间:2024/05/17 02:01
/* bo3-5.c 链栈(存储结构由c2-2.h定义)的基本操作(4个) */
/* 部分基本操作是由bo2-8.cpp中的函数改名得来 */
/* 另一部分基本操作是由调用bo2-8.cpp中的函数(取特例)得来 */
typedef SElemType ElemType; /* 栈结点类型和链表结点类型一致 */
#include"c2-2.h" /* 单链表存储结构 */
typedef LinkList LinkStack; /* LinkStack是指向栈结点的指针类型 */
#define InitStack InitList /* InitStack()与InitList()作用相同,下同 */
#define DestroyStack DestroyList
#define ClearStack ClearList
#define StackEmpty ListEmpty
#define StackLength ListLength
#include"bo2-8.c" /* 无头结点单链表的基本操作 */
Status GetTop(LinkStack S,SElemType *e)
{ /* 若栈不空,则用e返回S的栈顶元素,并返回OK;否则返回ERROR */
return GetElem(S,1,e);
}
Status Push(LinkStack *S,SElemType e)
{ /* 插入元素e为新的栈顶元素 */
return ListInsert(S,1,e);
}
Status Pop(LinkStack *S,SElemType *e)
{ /* 若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR */
return ListDelete(S,1,e);
}
void StackTraverse(LinkStack S,void(*visit)(SElemType))
{ /* 从栈底到栈顶依次对栈中每个元素调用函数visit() */
LinkStack temp,p=S; /* p指向栈顶元素 */
InitStack(&temp); /* 初始化临时栈temp */
while(p)
{
Push(&temp,p->data); /* 由S栈顶到栈底,依次将栈元素入栈到temp栈 */
p=p->next;
}
ListTraverse(temp,visit); /* 遍历temp线性表 */
}
/* main3-5.c 检验bo3-5.c的主程序 */
#include"c1.h"
typedef int SElemType; /* 定义栈元素的类型 */
#include"bo3-5.c"
void print(SElemType c)
{
printf("%d ",c);
}
int main()
{
int j;
LinkStack s;
SElemType e;
InitStack(&s); /* 初始化栈s */
for(j=1;j<=5;j++) /* 将2,4,6,8,10入栈 */
Push(&s,2*j);
printf("栈中的元素从栈底到栈顶依次为: ");
StackTraverse(s,print);
Pop(&s,&e);
printf("弹出的栈顶元素为%d\n",e);
printf("栈空否: %d(1:空 0:否)\n",StackEmpty(s));
GetTop(s,&e);
printf("当前栈顶元素为%d,栈的长度为%d\n",e,StackLength(s));
ClearStack(&s);
printf("清空栈后,栈空否: %d(1:空 0:否),栈的长度为%d\n",StackEmpty(s),StackLength(s));
DestroyStack(&s);
}
- bo3-1-1.c 链栈(存储结构由c2-2.h定义)的基本操作(4个) 及验证
- bo3-4.c 用单链表的基本操作实现链队列(存储结构由c3-2.h定义)的基本操作(9个)
- bo2-7.cpp 多项式(存储结构由c2-6.h定义)的基本操作及算法
- bo2-2.cpp 带有头结点的单链表(存储结构由c2-2.h定义)的基本操作(12个)
- bo2-1.cpp 顺序表示的线性表(存储结构由c2-1.h定义)的基本操作(12个)
- bo2-4.cpp设立尾指针的单循环链表(存储结构由c2-2.h定义)的12个基本操作
- bo2-8.cpp 不带头结点的单链表(存储结构由c2-2.h定义)的部分基本操作(9个)
- bo2-9.cpp 不带头结点的单链表(存储结构由c2-2.h定义)的部分基本操作(2个)
- bo2-5.cpp 带头结点的双向循环链表(存储结构由c2-4.h定义)的基本操作(14个)
- bo2-6.cpp 具有实用意义的线性链表(存储结构由c2-5.h定义)的24个基本操作
- 3.1.2顺序栈(存储结构由c3-1.h定义)的基本操作
- bo2-31.cpp 一个数组只生成一个静态链表(数据结构由c2-3.h定义)的基本操作(11个))
- bo2-32.cpp 一个数组可生成若干静态链表(数据结构由c2-3.h定义)的基本操作(12个)
- main3-1-2.c 检验bo3-1.cpp的主程序
- bo1-1.cpp 抽象数据类型Triplet和ElemType(由c1-1.h定义)的基本操作(8个)
- main3-4.c 检验bo3-2.c的主程序
- 二叉树的链式存储结构及基本操作
- 【C语言提高36】结构体类型和变量定义及基本操作
- xen 添加hypercall
- windows下用C语言读写bmp图像。来自网络,写下来备忘,同时抽时间慢慢注释下
- 新概念英语第二册 阅读
- Android的联通性---Bluetooth(五)
- Linux设备驱动开发环境的搭建
- bo3-1-1.c 链栈(存储结构由c2-2.h定义)的基本操作(4个) 及验证
- 一线网页游戏程序员日志 (三十)
- 卡特兰数
- 删除已被禁用的启动项
- sgu 181 X-Sequence
- NET网站正则去除汉字和只取数字
- C#中Split用法~
- myeclipse+8.6各个版本注册码
- 不知道是谁整理的,太有才了。。。