链栈的运算 置空/判空/进栈/出栈/读栈顶
2015-11-24 17:36
162 查看
#include<iostream> #include<stdlib.h> #include<stdio.h> #define MAXSIZE 100 using namespace std; //链栈的本质上是单链表,无非是限制了插入和删除运算只能在链头进行。 //由于在链头运算,不用像单链表那样附加头结点,更方便运算。 //链栈的类型 struct node{ int data ; struct node *next ; }; //由于没有对头结点指针,进行函数传递,导致代码看起来很弱, //传入的头指针地址,返回的也是头指针地址 //链栈置空 struct node* setnull(struct node *top){ top = NULL ; return top ; } //判链空 int isempty(struct node *top){ if(top == NULL) return 1; return 0 ; } //进栈 struct node * push(struct node *top , int x){ struct node *s = (struct node *)malloc(sizeof(struct node)) ; s->data = x ; s->next = top ; top = s ; cout<<"push () top = " << top << endl; return top ; } //出栈 struct node * pop(struct node *top){ if(top == NULL) return NULL ; //栈为空时,返回NULL struct node *s = top ; top= top->next ; free(s) ; return top; } //读栈顶元素 int gettop(struct node *top){ if(top == NULL) return NULL ; // 栈为空时,返回NULL return top->data ; } int main(){ struct node *s ; s=setnull(s) ; cout << "s = " << s<<endl; for(int i =1 ;i <10 ; i++) { s = push(s , i) ; cout<< "s = "<<s << endl; } while(!isempty(s)){ cout<<"出栈顺序: "<<gettop(s)<<endl ; s = pop(s ) ; } return 0 ; }
相关文章推荐
- C++primer plus第六版课后编程练习答案3.7
- C语言实现链表之双向链表(十五)测试用例
- iOS开发--微信首页下拉拍摄的眼睛效果(直接拿走)
- LeetCode---Longest Common Prefix
- Java遍历文件夹的2种方法:
- Oracle体系结构总结
- eclipse No Default Proposals 无提示
- JS字符串替换(jQuery)
- NativeScript和React-native比较
- 某张表中插入一组List数据
- 问题-MyBatis不识别Integer值为0的数据
- android 布局 实现底部表单中底部按钮悬浮
- android编译分析之7—product_config.mk
- 车牌识别--倾斜矫正
- ART
- DEV-gridview导出Excel
- [Java语言] JDBC: 批量处理提高SQL处理速度
- gradle.tooling.ModelBuilderService not found
- HDU 4339 Query【线段树】单点更新,动态查询
- php生成短网址的思路以及实现方法