链栈的相关操作
2012-07-24 23:20
330 查看
/*链栈不需要设置头结点*/ #include<iostream> typedef struct StackNode { char data; struct StackNode *next; }StackNode, *LinkStack; /*取栈顶元素, 只取元素,栈顶指针不变*/ int GetTop(LinkStack *top, char *e) { if(*top == NULL) //判断栈空 return -1; *e = (*top)->data; return 0; } /*入栈操作*/ int Push(LinkStack *top, char e) { LinkStack p; p = new StackNode; p->data = e; p->next = *top; *top = p; return 0; } /*出栈操作*/ int Pop(LinkStack *top, char *e) { LinkStack p; if(*top == NULL) //判断栈空 return -1; *e = (*top)->data; p = *top; *top = (*top)->next; delete p; return 0; } /*清空链栈*/ void ClearLinkStack(LinkStack *top) { LinkStack p; while(*top) { p = *top; *top = (*top)->next; delete p; } } int main() { LinkStack S = NULL; //初始化链栈S,不设头结点,S为头指针 char e; Push(&S, 'U'); Push(&S, ' '); Push(&S, 'e'); Push(&S, 'v'); Push(&S, 'o'); Push(&S, 'L'); Push(&S, ' '); Push(&S, 'I'); LinkStack p = S; while(p) //遍历链栈,从栈顶至栈底输出 { std::cout<<p->data; p = p->next; } GetTop(&S, &e); std::cout<<e; for(int i=0; i<8; i++) { Pop(&S, &e); std::cout<<e; } return 0; }
相关文章推荐
- 数据结构_链栈的建立与相关操作_C语言源代码
- 顺序栈,共享栈以及链栈的相关操作
- 链栈的定义及相关操作
- 链栈的相关操作
- Linux 文件及相关权限操作
- Spark DataFrame相关操作
- 手机联系人的相关操作,删除,插入,更新
- 【数据结构与算法】HashTable相关操作实现(附完整源码)
- executeBatch()相关操作汇总
- 文件相关的操作
- js操作select相关方法(收集)
- Html中的过滤器的相关操作
- C++ STL 堆的相关操作
- Java中利用JCOM实现操作Excel 相关方法解释
- 指针、链表的原理和各类操作相关心得以及学生信息管理系统
- 数据结构学习(九)——链栈的操作
- Oracle学习笔记之六(DDL:表、索引、视图、同义词、序列操作相关SQL)
- DataTable相关操作,筛选,取前N条数据,获取指定列数据
- Jsonp跨域相关操作
- linux磁盘操作相关命令(dh du fdisk mkfs.ext3)