数据结构初学————栈的基本操作
来源:互联网 发布:structure design软件 编辑:程序博客网 时间:2024/06/05 02:25
#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct Node{int data;struct Node *pNext;}NODE, *PNODE;typedef struct Stack{PNODE pTop;PNODE pBottom;}STACK, *PSTACK; // PSTACK 等价于 struct Stack * void init(PSTACK);void push(PSTACK, int); void traverse(PSTACK);bool pop(PSTACK, int *); void clear(PSTACK pS);int main(void){ STACK S;//STACK 等价于 struct Stack; int val; init( &S);//目的是造出一个空栈 push(&S, 1);//压栈 push(&S, 2);push(&S, 3);push(&S, 4);push(&S, 5);push(&S, 6);traverse(&S); //遍历输出 if( pop(&S, &val) )//出栈{printf("出栈成功,出栈的元素是%d\n ", val);}else{printf("出栈失败!\n");}traverse(&S);clear(&S);traverse(&S);if( pop(&S, &val) )//出栈{printf("出栈成功,出栈的元素是%d\n ", val);}else{printf("出栈失败!\n");} return 0;}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; //pS->pBottom->pNext = NULL;} return;}void push(PSTACK pS, int val){PNODE pNew = (PNODE)malloc(sizeof(NODE));pNew->data = val;pNew->pNext = pS->pTop; //pS.Top 不能改成pS.pBottom;pS->pTop = pNew; return;}void traverse(PSTACK pS){PNODE p = pS->pTop;while(p != pS->pBottom){printf("%d ", p->data);p = p->pNext;}printf("\n");return;}bool empty(PSTACK pS) {if(pS->pBottom == pS->pTop) return true;elsereturn false;} //把pS所指向的栈出栈一次,并把出栈的元素存入 pVal形参所指向的变量中 。如果出栈失败,返回 false,否则返回true。 bool pop(PSTACK pS, int *pVal){if(empty(pS))//pS本身存放的就是S的地址{return false;}else{PNODE r = pS->pTop;*pVal = r->data;pS->pTop = r->pNext;free(r);r = NULL;return true;}} //clear清空void clear(PSTACK pS){if(empty(pS)){return;}else{PNODE p = pS->pTop;PNODE q = NULL;while(pS ->pBottom != p){q = p ->pNext;free(p);p = q;}pS ->pTop = pS->pBottom;}}
0 0
- 数据结构初学————栈的基本操作
- 数据结构——栈的基本操作
- 数据结构——栈的基本操作
- 数据结构——栈的基本操作
- 数据结构——图的基本操作
- 数据结构——单链表的基本操作
- 数据结构——单链表的基本操作
- 数据结构——单链表的基本操作
- 数据结构——队列的基本操作
- 数据结构——堆栈的基本操作
- 数据结构——字符串的基本操作
- 数据结构—基本树的操作小结
- 数据结构——链栈的基本操作
- 数据结构之——栈的创建于基本操作
- 数据结构实验——基于数组的栈基本操作
- 数据结构复习整理——栈的基本操作
- 数据结构——几种链表基本操作
- 数据结构——单链表基本操作
- 大盘指数是什么意思?
- 通用Control类 - 基于Thinkphp写的通用资讯管理类
- QtCreator 使用DOM创建和操作(添加,删除,更新)XML
- web架构
- Android面试总结经
- 数据结构初学————栈的基本操作
- Android中通过Intent 调用图片、视频、音频、录音、拍照
- IP地址与MAC地址的区别
- 查看Eclipse版本号及各个版本区别
- 数组和指针——都是“退化”惹的祸
- UVA 10014 Simple calculations
- 1063. Set Similarity (25)
- 采用MQTT协议实现Android消息推送
- MATLAB命令大全(转载)