博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
链表栈
阅读量:4978 次
发布时间:2019-06-12

本文共 2082 字,大约阅读时间需要 6 分钟。

  链表栈的代码已经写了好久了,今天给大家分享出来。

  链表栈还是链表的那几样操作,很简单,把链表搞定,它就不在话下了。不对它做过多介绍了,直接贴代码,水平有限,有错误还请指出。

lstack.h

#ifndef _STACK_H#define _STACK_H#define MAXSIZE 10typedef struct node{    int data;    struct node * next;} Node;typedef struct stack{    Node * top;    int size;} Stack;void s_init(Stack * stack);//初始化int s_size(Stack * stack);//栈大小void s_push(Stack * stack, const int data);//入栈void s_pop(Stack * stack);//出栈int s_top(Stack * stack);//栈顶元素bool s_empty(Stack * stack);//为空bool s_full(Stack * stack);//为满void s_destroy(Stack * stack);//销毁#endif //_STACK_H

lstack.c

#include 
#include
#include
#include
#include
#include "lstack.h"static Node* make_node(const int data);//创建节点static void destroy_node(Node * current);//销毁节点void s_init(Stack * stack){ stack->top = make_node(INT_MIN);//创建一个头节点 stack->size = 0;}int s_size(Stack * stack){ return stack->size;}void s_push(Stack * stack, const int data){ Node * node;//新节点指针 assert(stack->size != MAXSIZE); node = make_node(data); node->next = stack->top;//将新节点next指向栈顶 stack->top = node;//将栈顶指向新节点 stack->size++;}void s_pop(Stack * stack){ Node * current;//保存栈顶指针 assert(stack->size != 0); current = stack->top; stack->top = stack->top->next;//栈顶指针下移 destroy_node(current); stack->size--;}int s_top(Stack * stack){ return stack->top->data;}bool s_empty(Stack * stack){ return stack->size == 0;}bool s_full(Stack * stack){ return stack->size == MAXSIZE;}void s_destroy(Stack * stack){ Node * current = stack->top; while (current != NULL)//遍历链表 { destroy_node(current); current = current->next; } stack->size = -1;}static Node* make_node(const int data){ Node * node = (Node *)malloc( sizeof(Node) ); if ( node == NULL ) exit(1); node->data = data; node->next = NULL; return node;}static void destroy_node(Node * current){ assert(current != NULL); free(current);}

转载于:https://www.cnblogs.com/ITgaozy/p/5146486.html

你可能感兴趣的文章
CSS基础学习 17.CSS动画
查看>>
ATM机
查看>>
java反射
查看>>
js表单反显
查看>>
浪潮之巅阅读笔记二
查看>>
CSS内嵌样式实现打字效果
查看>>
从 HTTP 到 HTTPS 再到 HSTS
查看>>
CentOS7和CentOS6的区别
查看>>
关系型数据库事务二:隔离级别
查看>>
送给IT新人--多看、多问、多写
查看>>
MySQL常用命令
查看>>
今天端午节
查看>>
UOJ #79. 一般图最大匹配
查看>>
应用程序域的用法
查看>>
InfluxDB执行语句管理(query management)
查看>>
大都市的同事爱。。。
查看>>
Yeoman官方教程:用Yeoman和AngularJS做Web应用
查看>>
ant 小结
查看>>
spring boot 简单配置 mybatis
查看>>
FPC and Qt
查看>>