栈的链式存储结构以及实现
2016-11-05 09:55
323 查看
上图是栈的链式存储结构(简称链栈)的模型图,栈已经有了栈顶在头部了,单链表中比较常用的头结点也就失去了意义。
链栈的结构代码实现如下:
#include <stdio.h> #include <malloc.h> #include <stdlib.h> typedef struct Node { int data;//数据域 struct Node * pNext;//指针域 }NODE,*PNODE; typedef struct Stack { PNODE top;//指向栈顶的指针 int count;//元素的个数 }Stack,*PStack; void createStack(PStack);//创建一个空的栈 bool push(PStack,int);//压栈 bool pop(PStack,int *);//弹栈 void showStack(PStack);//打印栈的信息 int main(void) { int m; Stack stack; createStack(&stack); push(&stack,1); push(&stack,2); push(&stack,3); showStack(&stack); pop(&stack,&m); showStack(&stack); printf("弹出的栈顶元素是 %d\n",m); return 0; } void createStack(PStack ps) { ps->top = NULL; ps->count = 0; } bool push(PStack ps,int e) { PNODE pNew = (PNODE)malloc(sizeof(NODE));//生成一个新的节点 if(!pNew) { printf("动态内存分配失败!\n"); exit(-1); } pNew->data = e; pNew->pNext = ps->top; ps->top = pNew;//栈顶指向这个新的结点 ps->count++; return true; } bool pop(PStack ps,int * pVal) { if(ps->top == NULL) { return false; } *pVal = ps->top->data; PNODE q = ps->top; ps->top = ps->top->pNext; ps->count--; free(q); q = NULL; return true; } void showStack(PStack ps) { PNODE p = ps->top; while(p != NULL) { printf("%d ",p->data); p = p->pNext; } printf("\n"); }
相关文章推荐
- 栈的链式存储结构以及实现
- [置顶] 数据结构——队列的链式存储结构以及实现
- C++学习总结——顺序存储,链式存储,索引存储,哈希存储的优缺点,以及vector数组,list链表,十字链表,索引结构,hash表的实现
- 队列的链式存储结构以及实现
- 基于关系数据库系统链式存储的树型结构数据,求某结点下的子树所有结点算法(t-sql语言实现)
- 栈的链式存储结构及实现
- 栈的链式存储结构及其基本运算实现
- 栈的定义以及不同的存储结构的AVA实现
- 泛型实现内部链式栈存储结构
- 栈的链式存储结构及其基本运算实现
- 【线性表一:】两种存储结构的代码实现:顺序存储和链式存储
- 数据结构之线性表――链式存储结构之单链表(php代码实现)
- 线性表的链式存储结构之单链表类的实现_Java
- 栈的链式存储结构及其基本运算的实现
- 栈的链式存储结构及C实现
- 线性表的链式存储结构之单链表结点类的实现_Java
- (原创)基于关系数据库系统链式存储的树型结构数据,求某结点下的子树所有结点算法(t-sql语言实现)
- 线性结构的顺序存储和链式存储的实现代码(二)
- 线性表的链式存储结构之单链表类的实现_Java
- JAVA实现队列 队列的链式存储结构及操作