数据结构第三章实验2.实现链栈的各种基本运算
2017-10-26 16:54
537 查看
(1)初始化栈s。
(2)判断栈s是否为空。
(3)依次进栈元素a,b,c,d,e。
(4)判断栈s是否为空。
(5)输出出栈序列。
(6)判断栈s是否为空。
(7)释放栈。
(2)判断栈s是否为空。
(3)依次进栈元素a,b,c,d,e。
(4)判断栈s是否为空。
(5)输出出栈序列。
(6)判断栈s是否为空。
(7)释放栈。
#include <stdio.h> #include <malloc.h> typedef char ElemType; typedef struct linknode { ElemType data; //数据域 struct linknode *next; //指针域 } LiStack; void InitStack(LiStack *&s) //初始化栈s { s=(LiStack *)malloc(sizeof(LiStack)); s->next=NULL; } void DestroyStack(LiStack *&s) //销毁栈 { LiStack *p=s,*q=s->next; while (q!=NULL) { free(p); p=q; q=p->next; } free(p); //此时p指向尾节点,释放其空间 } bool StackEmpty(LiStack *s) //判断栈是否为空 { return(s->next==NULL); } void Push(LiStack *&s,ElemType e) //进栈 { LiStack *p; p=(LiStack *)malloc(sizeof(LiStack)); p->data=e; //新建元素e对应的节点*p p->next=s->next; //插入*p节点作为开始节点 s->next=p; } bool Pop(LiStack *&s,ElemType &e) //出栈 { LiStack *p; if (s->next==NULL) //栈空的情况 return false; p=s->next; //p指向开始节点 e=p->data; s->next=p->next; //删除*p节点 free(p); //释放*p节点 return true; } bool GetTop(LiStack *s,ElemType &e) //取栈顶元素 { if (s->next==NULL) //栈空的情况 return false; e=s->next->data; return true; } extern void InitStack(LiStack *&s); extern void DestroyStack(LiStack *&s); extern bool StackEmpty(LiStack *s); extern void Push(LiStack *&s,ElemType e); extern bool Pop(LiStack *&s,ElemType &e); extern bool GetTop(LiStack *s,ElemType &e); int main() { ElemType e; LiStack *s; printf("栈s的基本运算如下:\n"); printf(" (1)初始化栈s\n"); InitStack(s); printf(" (2)栈为%s\n",(StackEmpty(s)?"空":"非空")); printf(" (3)依次进栈元素a,b,c,d,e\n"); Push(s,'a'); Push(s,'b'); Push(s,'c'); Push(s,'d'); Push(s,'e'); printf(" (4)栈为%s\n",(StackEmpty(s)?"空":"非空")); printf(" (5)出栈序列:"); while (!StackEmpty(s)) { Pop(s,e); printf("%c ",e); } printf("\n"); printf(" (6)栈为%s\n",(StackEmpty(s)?"空":"非空")); printf(" (7)释放栈\n"); DestroyStack(s); }
相关文章推荐
- 数据结构第三章实验3.实现环形队列的各种基本运算
- 数据结构第五版第二章实验2.实现单链表的各种基本运算
- 实验3_2 实现链栈各种基本运算的算法
- 实现链栈各种基本运算
- 实现链栈各种基本运算的算法
- 编写一个程序,实现链栈的各种基本运算
- 实验题7.1: 编写一个程序algo7-1.cpp,实现二叉树的各种基本运算,并在此基础上设计一个程序Main.cpp完成如下功能(b为如下图所示的一棵二叉树)
- 实现顺序表各种基本运算算法
- 实现二叉树各种基本运算的算法
- 数据结构--链栈基本功能实现程序代…
- 实验4:栈和队列的基本操作实现及其应用之《链栈》
- 实现顺序栈的各种基本运算的算法
- 实现顺序栈各种基本运算的算法
- 实现顺序栈各种基本运算
- 数据结构:实验四栈和队列的基本操作实现及其应用
- 编写一个程序实现链式栈的各种基本运算(假设顺序表的元数基本类型为Char)
- 数据结构 - 2顺序表及链表基本运算实现
- 链栈基本运算(实验题3.2)
- 实现顺序表的各种基本运算(利用线性表来实现)
- 实现环形队列各种基本运算的算法(用顺序结构)