4_链表栈
来源:互联网 发布:守夜人社工库源码 编辑:程序博客网 时间:2024/06/18 12:31
链表栈,跟前面栈的实现有点像,注释很详细,有什么不懂可以e_mail我,欢迎提出宝贵意见
#include <stdlib.h>#include <stdio.h>#include <assert.h>typedef struct _NODE { int data; struct _NODE *next;}NODE,*PNODE;typedef struct _STACK{PNODE pBtom;PNODE pTop;}STACK,*PSTACK;bool isEmpty(PSTACK pS);void InitStack(PSTACK pS);bool push(PSTACK pS,int val);bool pop(PSTACK pS);bool destroyStack(PSTACK pS);void InitStack(PSTACK pS){ if (pS==NULL) { return ; } PNODE pNew=(PNODE)malloc(sizeof(NODE)); if (pNew==NULL) { exit(-1); } pS->pTop=pNew;//把TOP指向,新添加的节点 pS->pBtom=pS->pTop;//Top和BTom在为空时指向同一个空节点// pNew->next=NULL;}bool push(PSTACK pS,int val){PNODE pNew=(PNODE)malloc(sizeof(NODE));if (pNew==NULL){return false;}pNew->data=val;pNew->next=pS->pTop;pS->pTop=pNew;//把top指向新添加的节点return true;}void showStack(PSTACK pS){if (isEmpty(pS)){return ;} PNODE pTail=pS->pTop;while (pTail!=pS->pBtom){printf("%d\t",pTail->data);pTail=pTail->next;}printf("\n");}bool isEmpty(PSTACK pS){if (pS->pTop==pS->pBtom)//如果top==btom这时说明没有节点了{return true;}return false;}bool pop(PSTACK pS){if (isEmpty(pS)){return false;} PNODE deleteNode=pS->pTop; pS->pTop=deleteNode->next; free(deleteNode); return true;}bool destroyStack(PSTACK pS){while (pS->pTop!=pS->pBtom){PNODE deleteNode=pS->pTop;pS->pTop=pS->pTop->next;free(deleteNode);}free(pS->pTop);//free(pS->pBtom); // delete pS;return true;}void main(){ STACK ST;//存放在栈上,程序运行完会自动销毁,malloc或者new的才需要手动释放 InitStack(&ST); push(&ST,1); push(&ST,2); // assert(true==destroyStack(&ST)); showStack(&ST); system("pause");}
- 4_链表栈
- java数据结构_笔记(4)_图
- 4_线性表_链式存储
- 互斥体_创建4线程_打印
- 4_日志_添加log4j
- 4_委托
- 4步骤_职业生涯
- 数据库_索引4
- 2016.12.4_参考答案...
- 4_代理模式
- ^_^
- ^_^
- ^_^
- ^_^
- *_&
- ...!@~....!@#....+_#%.
- ^_^
- ^_^
- 猴子大王
- Linux 网络驱动器装置 iSCSI 服务器
- 设计模式的意图、动机
- 算法练习之水题
- IFileOperation interface
- 4_链表栈
- Python的一些扩展库
- n个数字组成的三位数
- 内容页标记(1) -- 手册上有的
- KMP算法
- 基于jquery扩展漂亮的CheckBox
- Leetcode 之 Reverse Linked List II
- ORA-12154 和 TNS-03505 监听错误的解决方法
- 备份数据库