栈的基本实现(入栈,出栈,清空,判断是否为空)
来源:互联网 发布:会员管理系统源码 编辑:程序博客网 时间:2024/04/28 21:18
#include <stdio.h>#include <stdlib.h>typedef struct Node {int data;struct Node *pNext;}NODE, *PNODE;typedef struct Stack {PNODE pTop;PNODE pBottom;}STACK, *PSTACK;void init(PSTACK pS) {pS->pTop = (PNODE)malloc(sizeof(NODE));if(NULL == pS->pTop) {printf("动态内存分配失败!\n");exit(-1);}else {pS->pBottom = pS->pTop;pS->pTop->pNext = NULL;}}void push(PSTACK pS, int val){PNODE pNew = (PNODE)malloc(sizeof(NODE));pNew->data = val;pNew->pNext = pS->pTop;pS->pTop = pNew;}bool empty(PSTACK pS) {if(pS->pTop == pS->pBottom)return true;elsereturn false;}bool pop(PSTACK pS, int* pVal) {if(empty(pS)) {return false;}else {PNODE r = pS->pTop;*pVal = r->data;pS->pTop = r->pNext;free(r);r = NULL;return true;}}void traverse(PSTACK pS) {PNODE p = pS->pTop;while(p != pS->pBottom) {printf("%d ", p->data);p = p->pNext;}printf("\n");}void clear(PSTACK pS){if(empty(pS)){return;}else{PNODE p = pS->pTop;PNODE q = NULL;while(p!=pS->pBottom){q = p->pNext;free(p);p = q;} pS->pTop = pS->pBottom;}}int main(void){STACK S;int val;init(&S);push(&S, 1);push(&S, 2);push(&S, 3);push(&S, 4);push(&S, 5);push(&S, 6);traverse(&S);//clear(&S); clear()清空栈if(pop(&S, &val)) //val用于保存出栈的数值printf("ok\n");elseprintf("error\n");traverse(&S);return 0;}
代码整理自郝斌数据结构视频
- 栈的基本实现(入栈,出栈,清空,判断是否为空)
- 顺序栈的基本操作实现---入栈、出栈、判断是否为空
- 链表栈的基本操作的实现---入栈、出栈、清空
- stack容器的用法:入栈、出栈、访问栈顶元素,判断是否为空
- 栈的出栈、入栈、遍历、清空操作
- C语言实现顺序栈的基本操作(初始化、判断空、入栈、出栈、获取栈顶元素)
- [数据结构]c语言实现链栈的入栈,出栈,清空,销毁等操作
- [数据结构]c语言实现顺序栈的入栈,出栈,清空,销毁等操作
- 栈的操作(创建,入栈,出栈,清空,遍历等等)
- 线性存储----链式栈的创建、压栈、出栈、清空、空栈判断
- 链栈的建立、判空、入栈、出栈、求长、访顶、清空和销毁
- 链栈的建立、判空、入栈、出栈、求长、访顶、清空和销毁
- C++ 栈的 基本操作 入栈 出栈 判空 求长度(方法二)
- 【数据结构】用C++编写栈及基本操作(包括入栈,出栈,获得栈顶,摧毁,清空等等)
- 数据结构(十) 链队列的基本操作 ----入队列,出队列,判断队列是否为空
- C++ 栈的 基本操作 入栈 出栈 判空 求长度
- 栈的创建 以及基本操作出栈 入栈,判空
- 【数据结构】C语言实现栈的进栈,出栈,遍历,清空等操作
- ATL CLR MFC Win32的区别
- 关于java函数传值的学习深化
- 【Android学习笔记】用intent调用常用的系统组件
- 有趣的智力问题
- 条码内容包括中文?
- 栈的基本实现(入栈,出栈,清空,判断是否为空)
- Static 作用详述
- Scilab 画一个漂亮的心形线
- 明星为啥选嫁官家富家?
- 非静态成员函数后面的const作用
- Titanium的svn设定
- linux 下配置 jdk + eclipse + android sdk
- centos关机与重启命令详解
- 链式队列操作,初始化,入队,出队