c语言栈的链表实现
#include <stdio.h>
#include <stdlib.h>
#include"PublicDS.h"
typedef int ElemType; //定义栈节点的结构
typedef struct StackNode{
ElemType data;
struct StackNode* next;
}StackNode;
//定义栈的结构
typedef struct Stack{
StackNode* top;
int count;
}Stack; /*
* 初始化一个空栈
*/
void InitStack(Stack* &s);
/*
* 销毁栈
*/
void DestroyStack(Stack* &s);
/*
* 清空栈
*/
void ClearStack(Stack* s);
/*
* 判断栈是否为空
*/
bool StackEmpty(Stack s);
/*
* 获取栈的长度
*/
int StackLength(Stack s);
/*
* 获取栈顶元素
*/
void GetTop(Stack s, ElemType* e);
/*
* 将元素压入栈
*/
void Push(Stack* &s, ElemType e);
/*
* 将元素弹出栈
*/
void Pop(Stack* &s, ElemType* e);
/*
* 打印栈
*/
void PrintStack(Stack* s,FILE* fout); void InitStack(Stack* &s)
{
MALLOC(s, sizeof(Stack), Stack*);
s->top = NULL;
s->count = ;
} void DestroyStack(Stack* &s)
{
StackNode* sn_tmp_ptr;
while (s->top){
sn_tmp_ptr = s->top;
s->top = s->top->next;
free(sn_tmp_ptr);
}
free(s); } void ClearStack(Stack* &s)
{
while (s->top){
s->top->data = ;
s->top = s->top->next;
}
} bool StackEmpty(Stack s)
{
return s.count< ;
} int StackLength(Stack s)
{
return s.count;
} void GetTop(Stack s, ElemType* e)
{
*e = s.top->data;
} void Push(Stack* &s, ElemType e)
{
StackNode* snptr;
MALLOC(snptr, sizeof(StackNode), StackNode*);
snptr->data = e;
snptr->next = s->top;
s->top = snptr;
s->count++; } void Pop(Stack* &s, ElemType* e)
{
*e = s->top->data;
StackNode* sn_tmp_ptr = s->top;
s->top = s->top->next;
s->count--;
free(sn_tmp_ptr);
} void PrintStack(Stack* s,FILE *fout)
{
while (s->top){
fprintf(fout,"%d", s->top->data);
s->top = s->top->next;
}
}
void main(){
FILE *fin, *fout;
fin = fopen("input.txt", "r");
fout = fopen("output.txt", "w");
int tmp = ;
while (!feof(fin)){
fscanf(fin, "%d", &tmp);
if (tmp != -){
fprintf(fout, "%8d--->", tmp);
Stack *sc = NULL;
InitStack(sc);
while (tmp / != )
{
Push(sc, tmp % );
tmp /= ;
}
Push(sc, tmp);
PrintStack(sc, fout);
fprintf(fout, "\n");
DestroyStack(sc);
}
}
fclose(fin);
fclose(fout);
system("pause");
}
c语言栈的链表实现的更多相关文章
- C语言 - 栈和单链表的实现
单链表:linkList.h linkList.c #ifndef LINKLIST_H_INCLUDE #define LINKLIST_H_INCLUDE #include <Windows ...
- C语言实现单链表-03版
在C语言实现单链表-02版中我们只是简单的更新一下链表的组织方式: 它没有更多的更新功能,因此我们这个版本将要完成如下功能: Problem 1,搜索相关节点: 2,前插节点: 3,后追加节点: 4, ...
- C语言实现单链表-02版
我们在C语言实现单链表-01版中实现的链表非常简单: 但是它对于理解单链表是非常有帮助的,至少我就是这样认为的: 简单的不能再简单的东西没那么实用,所以我们接下来要大规模的修改啦: Problem 1 ...
- C语言栈与调用惯例
C语言栈与调用惯例 1.前言 最近在再看<程序员的自我修养>这本书,对程序的链接.装载与库有了更深入的认识.关于这本书的评价可以去豆瓣看看http://book.douban.com/su ...
- Codeforces Round #541 (Div. 2) G dp + 思维 + 单调栈 or 链表 (连锁反应)
https://codeforces.com/contest/1131/problem/G 题意 给你一排m个的骨牌(m<=1e7),每块之间相距1,每块高h[i],推倒代价c[i],假如\(a ...
- C语言实现单链表,并完成链表常用API函数
C语言实现单链表,并完成链表常用API函数: 1.链表增.删.改.查. 2.打印链表.反转打印.打印环形链表. 3.链表排序.链表冒泡排序.链表快速排序. 4.求链表节点个数(普通方法.递归方法). ...
- C语言实现通用链表初步(一)
注意:本文讨论的是无头单向非循环链表. 假设不采用Linux内核链表的思路,怎样用C语言实现通用链表呢? 一种常用的做法是: typedef int element_t; struct node_in ...
- C语言实现单链表节点的删除(带头结点)
我在之前一篇博客<C语言实现单链表节点的删除(不带头结点)>中具体实现了怎样在一个不带头结点的单链表的删除一个节点,在这一篇博客中我改成了带头结点的单链表.代码演示样例上传至 https: ...
- 数据结构应用实例#栈&单链表#简易计算器
修改BUG的时候一不小心BUG越修越多,鉴于维护程序并不是学习数据结构的初衷,我已经果断的弃坑了!! 以下内容再不更新,Github上的代码直接无法正常编译运行.... 参考参考就好,学习到栈的作用就 ...
随机推荐
- u-boot学习(两):u-boot简要分析
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 看到不错的文章.不要加入收藏夹, ...
- selenium2入门 断言失败自动截图 (四)
一般web应用程序出错过后,会抛出异常.这个时候能截个图下来,当然是极好的. selenium自带了截图功能. //获取截图file File scrFile= ((TakesScreenshot)d ...
- 快速构建Windows 8风格应用36-商店应用发布流程
原文:快速构建Windows 8风格应用36-商店应用发布流程 引言 在发布应用之前,我们需要注册开发者账号才能够发布应用.我们可以登录https://appdev.microsoft.com/Sto ...
- 【c++类的构造函数具体解释
】
一.构造函数是干什么的 class Dog { public: // 类Dog的构造函数 // 特点:以类名作为函数名,无返回类型 Dog() ...
- Oracle的SOME,ANY和ALL操作
平时很少用的这几个操作,今天遇到了.于是又看了一下文档. SOME和ANY一样,是比较宽松的,类似于OR.满足其中任何一个都可以. ALL要求严格一些,类似于AND,必须全部满足才可以. 不能单独使用 ...
- TodoList开发笔记 – PartⅠ
做了一年多的桌面软件,最近开始转向Web方面的开发,既然比较熟悉Net那么首当其冲就是学习ASP.Net,以及HTML.CSS.Javascript. 为了检验这个把星期来的学习成果,着手做了一个To ...
- Web应用和RESTful架构
Web应用和RESTful架构 单页Web应用 概述 单页Web应用并不是突然诞生的一门新技术,而是web展示的一种新的尝试.它将所有的动作局限于一个Web页面,在加载站点首页的时候就加载站点需要的J ...
- ASP.NET SignalR 2.0入门指南
ASP.NET SignalR 2.0入门指南 介绍SignalR ASP.NET SignalR 是一个为 ASP.NET 开发人员的库,简化了将实时 web 功能添加到应用程序的过程.实时Web功 ...
- Knockout, Web API 和 ASP.Net Web Forms 进行简单数据绑定
使用Knockout, Web API 和 ASP.Net Web Forms 进行简单数据绑定 原文地址:http://www.dotnetjalps.com/2013/05/Simple-da ...
- 事件聚合IEventAggregator和 Ihandle<T>
-事件聚合IEventAggregator和 Ihandle<T> 今天 说一下Caliburn.Micro的IEventAggregator和IHandle<T>分成两篇 ...