用c语言实现链栈 (带头结点)
来源:互联网 发布:艾瑞咨询数据 编辑:程序博客网 时间:2024/06/05 06:02
#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>#include <stdlib.h>using namespace std;typedef struct Node{ int element; struct Node* next;}Node;///创建空的栈Node *creatstack(){ Node *s = (Node *)malloc(sizeof(Node)); if(!s) return NULL; s ->next = NULL; return s;}///创建空的节点Node *creatNode(int item){Node *tmp = (Node*)malloc(sizeof(Node));if(!tmp) return NULL;tmp->next = NULL;tmp->element = item;return tmp;}///插入节点,入栈,链表的头插入节点元素void push(Node *s,int item){Node *tmp = creatNode(item); if(!tmp) printf("无法申请内存");else{tmp->next = s->next;s->next = tmp;}}///取出栈顶元素int top(Node* s){return s->next->element;}///出栈void pop(Node* s){Node *tmp = s->next;s->next = s->next->next;free(tmp);}///打印栈中元素,越早进去,越晚出来void print(Node* s){Node *p = s->next;while(p){printf("%d ",p->element);p = p->next;}printf("\n");}///求栈中元素的多少int sizestack(Node *s){Node *p = s->next; int cnt = 0;while(p){cnt ++;p = p->next;}return cnt;}///检验栈是否为空bool isempty(Node* s){return s->next==NULL;}int main(){ Node *stack = creatstack(); push(stack,5); //push(stack,6); //push(stack,7); //push(stack,8); //push(stack,9); //push(stack,10); print(stack); printf("%d\n",top(stack)); pop(stack); print(stack); printf("%d\n",sizestack(stack)); if(isempty(stack)) printf("emtpy!\n"); return 0;}
阅读全文
0 0
- 用c语言实现链栈 (带头结点)
- 带头结点的链队列实现(C语言)
- 带头结点的链队列实现(C语言)
- 带头结点的链队列实现(C语言)
- 双指针不带头结点的链栈的实现(C语言)
- 双指针不带头结点的链栈的实现(C语言)
- C语言实现双向非循环链表(带头结点尾结点)的基本操作
- C语言实现双向非循环链表(带头结点尾结点)的节点插入
- C语言实现单链表(带头结点)的基本操作
- C语言实现单链表节点的删除(带头结点)
- C语言实现单链表的节点插入(带头结点)
- C语言实现单链表的逆序打印(带头结点)
- C语言实现单链表(不带头结点)
- 不带头结点的单链表的实现(C语言)
- C语言实现单链表-不带头结点
- C语言实现双向非循环链表(不带头结点)的基本操作
- C语言实现双向非循环链表(不带头结点)的逆序打印
- C语言实现双向非循环链表(不带头结点)的节点插入
- HDU 4565矩阵快速幂—— So Easy!
- (矩阵快速幂)hdu1575 Tr A
- TensorFlow初入
- mysql的延迟加载
- flask、bottle和web.py的相似
- 用c语言实现链栈 (带头结点)
- SSL证书探寻
- java输入JOptionPane
- 腾讯2017暑期实习生编程题
- 仿淘宝输入框(JavaScript+html)
- Hibernate多对多的关系
- ubuntu 自动安装依赖包命令
- loadrunner函数之lr_think_time思考时间设置
- const 修饰函数参数,返回值,函数体