栈子系统c语言,数据结构(栈子系统:c实现)
#include
#include
#define N sizeof(stacknode)//结点所占字节数 N
//定义结构体
typedef int datatype;
typedef struct stacknode
{
datatype data;
struct stacknode *next;
}stacknode;
//定义栈顶
typedef struct
{
stacknode *top;
int count;//计数用
}linkstack;
//进栈,元素一一进栈
void InsertStack(linkstack *s)
{
int x=0;
stacknode *p;
s->top=NULL;
s->count=0;
//printf("\n\t建立一个栈子系统");
p=(stacknode*)malloc(N);
printf("\n\t\t请逐个输入数字,结束标记位,做结束符的数字: 0 \n");
while(1)
{
/*printf("\t\t请输入:");
fflush(stdin);
if(!scanf("%d",&x))
{
printf("输入的元素种类错误!!!\n");
continue;
}
else if(x=='#') break;
else
{
p->data=x;
p->next=s->top;
s->top=p;
s->count++;
}
*/
printf("\t\t请输入:");
p=(stacknode*)malloc(N);
fflush(stdin);
if(!scanf("%d",&x))
{
printf("\t\t\t输入的“元素“种类错误!!!\n");
continue;
}
else if(x==0)
break;
else
{
p->data=x;
p->next=s->top;
s->top=p;
s->count++;
}
}
printf("\n");
}
//显示栈中元素
void ShowStack(linkstack *s)
{
stacknode *p;
int i=0;
p=s->top;
i=s->count;
//p->data=s->top->data;
//if(p->next==NULL)
if(i==0)
printf("\t\t栈是一个空栈!!!!\n");
else
{
printf("\t栈中各个元素为:\t");
while(i!=0)
{
printf("%8d",p->data);
p=p->next;
//s->top=s->top->next;
i--;
}
}
printf("\n");
}
//求栈中元素的个数
void LengthStack(linkstack *s)
{
printf("\t栈中元素的个数为:\t");
printf("%d",s->count);
}
//出栈,栈中各个元素的出栈
void PutStack(linkstack *s)
{
//int x;
stacknode *p;
//linkstack *i;
if(s->count==0)
{
printf("\t\t栈是一个空栈!!!!");
//return 0;
}
else
{
/*
p=s->top;
x=p->data;
s->top=p->next;
free(p);
//s->count-=1;
*/
p=s->top;
s->top=s->top->next;
printf("\n\t\t\t\t出栈元素为:%d\n",p->data);
free(p);
s->count--;
}
}
//数制转换,十进制转换为二进制
void ShiftStack(linkstack *s)
{
int z=0;
int m=0;
stacknode *p;
printf("请输入所要转换的 ”数字“ Z:\t");
scanf("%d",&z);
s->top=NULL;
while(z)
{
m=z%2;
z=z/2;
p=(stacknode*)malloc(N);
p->next=s->top;
s->top=p;
s->top->data=m;
}
printf("\n\t转化后的二进制为\t");
while(s->top)
{
p=s->top;
printf("%d",p->data);
s->top=s->top->next;
free(p);
}
printf("\n");
}
int main()
{
int a;
linkstack s;
s.count=0;
//linkstack *s;
while(1)
{
printf(" \n\t\t\t\t\t\t栈子系统\n");
printf(" \t\t***************************************************\n");
printf(" \t\t* 1------进 栈 *\n");
printf(" \t\t* 2------出 栈 *\n");
printf(" \t\t* 3------显示栈中元素 *\n");
printf(" \t\t* 4------求栈中元素个数 *\n");
printf(" \t\t* 5------数制转换 *\n");
printf(" \t\t* 0------返 回 *\n");
printf(" \t\t***************************************************\n");
printf(" 请输入(0-5)选项:\n");
printf("\n请输入所要达到第几号功能:\t");
fflush(stdin);
scanf("%d",&a);
if(a == 1)
InsertStack(&s);
else if(a == 2)
PutStack(&s);
else if(a == 3)
ShowStack(&s);
else if(a == 4)
LengthStack(&s);
else if(a == 5)
ShiftStack(&s);
else if(a == 0)
return 0;
else{
printf("!!!!!输入有误,请重新输入!!!!!\n");
}
}
}
栈子系统c语言,数据结构(栈子系统:c实现)相关推荐
- 11.0、C语言数据结构——栈
11.0.C语言数据结构--栈 栈的定义: 栈是一种重要的线性结构,可以这样讲,栈是前面讲过的线性表的一种具体形式: 官方定义:栈(stack)是一个 后进先出(Las ...
- c语言特殊计算器设计报告,C语言数据结构栈计算器的实现课题设计报告书
C语言数据结构栈计算器的实现课题设计报告书 (13页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.9 积分 目录1. 课程设计任务 12. 需求分析 ...
- c语言 栈结构存放数据类型,数据结构——栈的详解
栈和队列是两种重要的线性结构,从数据结构的角度看,栈和队列也是线性表,其特殊性在于栈和队列的基本操作是线性表的子集.他们是操作受限的线性表,因此,可称为限定性的数据结构.但从数据类型角度看,他们是和线 ...
- C语言中用链表构建栈讲解,C语言数据结构之使用链表模拟栈的实例
C语言数据结构之使用链表模拟栈的实例 以下是"使用链表模拟栈"的简单示例: 1. 用C语言实现的版本 #include #include typedef char datatype ...
- C语言数据结构-栈的使用及实例
本文主要讨论C语言数据结构的又一重要结构--栈 一.栈的理论知识 1. 定义和特点 定义:只允许在一端插入和删除的线性表:允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom). 特点 ...
- C语言-数据结构-栈(静态栈与动态栈)
一.简介 在哔哩哔哩看视频学的,赫斌老师数据结构入门的内容-b站搜索:av6159200(P33),通过学习,能独立把赫斌老师教的敲出来,由于动态栈(链表阉割版)的功能很少,我并没有增加什么其它功能, ...
- [C语言数据结构]栈
目录 1.栈的定义: 1.2栈的特性: 1.3栈的实现: 1.4代码: 1.4.1结构的声明: 1.4.2栈的初始化: 代码: 1.4.3入栈: 代码: 1.4.4出栈 void StackPop(S ...
- C语言 数据结构 栈的数组实现 realloc函数
主题:栈的数组实现 功能:分别栈的入栈.弹栈.打印操作 提示:运行程序自动进入入栈操作,退出入栈,数组3个ctrl z,然后进入出栈操作,输入非n的任意char字符,继续出栈.输入n结束出栈,整个程序 ...
- C语言 数据结构 栈(用链表实现)
疑惑 为什么栈要分两个结构体来创建,而链表只需要一个? 能不能只用一个结构体创建一个栈? 代码 用函数实现了压栈,弹栈,打印栈的操作 #include<stdio.h> #include& ...
- GO语言-数据结构-栈
目录 1.栈的顺序存储实现 1.1结构体定义 1.2 初始化栈 1.3入栈 1.4出栈 1.5完整代码 1.6拓展-一个数组实现两个栈 2.栈的链式存储实现 2.1链栈的结构体定义 2.2链栈的初始化 ...
最新文章
- linux安装qt_采用STM32MP1的PanGu Board开发板运行Qt应用
- 个人--变成星星的孩子
- ionic2.0消息订阅监听机制
- 树莓派原python3.5+opencv3.3.1+tensorflow1.7.0安装
- 自动驾驶前沿综述:基于深度强化学习的自动驾驶算法
- 利用spring注解创建bean
- JVM 学习二:类加载器子系统
- kissy 淘宝网脚本库
- 使用Moq、NUnit和Shoulded进行单元测试
- C# 禁止控件重绘(绘制)
- cad完全卸载教程_AutoCAD 2019 如何卸载,彻底卸载CAD教程
- UVA11082 行列模型
- known_hosts有什么用?
- 按键精灵脚本:采集鼠标当前所在坐标的颜色
- win10左右声道音量不一致的解决方法
- 基于Ant Design vue框架之三 删除功能细分
- 从 LoG 到 DoG 再到 XDoG, FDoG
- sql同一张表统计数据生成多个统计列
- 图论总结(欧拉路+Floyd所有结点最短+Bellman-Ford算法+SPFA+Dijsktra算法+Tarjan算法+最小生成树(prim+kruskal) )
- 黑马程序员——OC基础---核心语法(id,构造方法,Category,description,SEL)
热门文章
- ubuntu 12.04 开启root
- 数字化转型是什么?核心又是什么呢?
- Algs4-1.4.8计算输入文件中相等的整数对的数量
- 细说多线程(六) —— 异步 SqlCommand
- 《Abaqus GUI程序开发指南(Python语言)》——2.5 动态类型简介
- [Python爬虫] 之十二:Selenium +phantomjs抓取中的url编码问题
- http接口测试工具——RESTClient
- 【AaronYang风格】第一篇 CodeFirst 初恋
- C# 枚举在项目中的应用总结
- SAP 库存相关表格