c语言栈的链表实现
2024-10-10 03:06:22
#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");
}
最新文章
- [ImportNew] Perforce - Restoring Mistakenly Deleted Files in Workspace
- php数组插入数据库这个功能该怎么实现
- centos7 Nexus maven私有仓库
- 初用Ubuntu常见问题及解决方案之一
- sql大全
- event.keyCode|| event.which.的用法
- C++排列对称串
- HIVE Transform using 用法
- 测试的rtsp地址
- PRD产品需求文档概要
- CSS3中text-overflow支持以...代替超出文本
- css系列教程--选择器
- 交换机access和trunk的一些小结(转)
- TopCoder SRM 625 Incrementing Sequence 题解
- 类图class的依赖关系
- Linux select I/O 复用
- APICloud使用
- 洛谷mNOIP模拟赛Day2-将军令
- flutter 读写文件
- JS之工厂模式