#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实现)相关推荐

  1. 11.0、C语言数据结构——栈

    11.0.C语言数据结构--栈 栈的定义:         栈是一种重要的线性结构,可以这样讲,栈是前面讲过的线性表的一种具体形式:         官方定义:栈(stack)是一个 后进先出(Las ...

  2. c语言特殊计算器设计报告,C语言数据结构栈计算器的实现课题设计报告书

    C语言数据结构栈计算器的实现课题设计报告书 (13页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.9 积分 目录1. 课程设计任务 12. 需求分析 ...

  3. c语言 栈结构存放数据类型,数据结构——栈的详解

    栈和队列是两种重要的线性结构,从数据结构的角度看,栈和队列也是线性表,其特殊性在于栈和队列的基本操作是线性表的子集.他们是操作受限的线性表,因此,可称为限定性的数据结构.但从数据类型角度看,他们是和线 ...

  4. C语言中用链表构建栈讲解,C语言数据结构之使用链表模拟栈的实例

    C语言数据结构之使用链表模拟栈的实例 以下是"使用链表模拟栈"的简单示例: 1. 用C语言实现的版本 #include #include typedef char datatype ...

  5. C语言数据结构-栈的使用及实例

    本文主要讨论C语言数据结构的又一重要结构--栈 一.栈的理论知识 1. 定义和特点 定义:只允许在一端插入和删除的线性表:允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom). 特点 ...

  6. C语言-数据结构-栈(静态栈与动态栈)

    一.简介 在哔哩哔哩看视频学的,赫斌老师数据结构入门的内容-b站搜索:av6159200(P33),通过学习,能独立把赫斌老师教的敲出来,由于动态栈(链表阉割版)的功能很少,我并没有增加什么其它功能, ...

  7. [C语言数据结构]栈

    目录 1.栈的定义: 1.2栈的特性: 1.3栈的实现: 1.4代码: 1.4.1结构的声明: 1.4.2栈的初始化: 代码: 1.4.3入栈: 代码: 1.4.4出栈 void StackPop(S ...

  8. C语言 数据结构 栈的数组实现 realloc函数

    主题:栈的数组实现 功能:分别栈的入栈.弹栈.打印操作 提示:运行程序自动进入入栈操作,退出入栈,数组3个ctrl z,然后进入出栈操作,输入非n的任意char字符,继续出栈.输入n结束出栈,整个程序 ...

  9. C语言 数据结构 栈(用链表实现)

    疑惑 为什么栈要分两个结构体来创建,而链表只需要一个? 能不能只用一个结构体创建一个栈? 代码 用函数实现了压栈,弹栈,打印栈的操作 #include<stdio.h> #include& ...

  10. GO语言-数据结构-栈

    目录 1.栈的顺序存储实现 1.1结构体定义 1.2 初始化栈 1.3入栈 1.4出栈 1.5完整代码 1.6拓展-一个数组实现两个栈 2.栈的链式存储实现 2.1链栈的结构体定义 2.2链栈的初始化 ...

最新文章

  1. linux安装qt_采用STM32MP1的PanGu Board开发板运行Qt应用
  2. 个人--变成星星的孩子
  3. ionic2.0消息订阅监听机制
  4. 树莓派原python3.5+opencv3.3.1+tensorflow1.7.0安装
  5. 自动驾驶前沿综述:基于深度强化学习的自动驾驶算法
  6. 利用spring注解创建bean
  7. JVM 学习二:类加载器子系统
  8. kissy 淘宝网脚本库
  9. 使用Moq、NUnit和Shoulded进行单元测试
  10. C# 禁止控件重绘(绘制)
  11. cad完全卸载教程_AutoCAD 2019 如何卸载,彻底卸载CAD教程
  12. UVA11082 行列模型
  13. known_hosts有什么用?
  14. 按键精灵脚本:采集鼠标当前所在坐标的颜色
  15. win10左右声道音量不一致的解决方法
  16. 基于Ant Design vue框架之三 删除功能细分
  17. 从 LoG 到 DoG 再到 XDoG, FDoG
  18. sql同一张表统计数据生成多个统计列
  19. 图论总结(欧拉路+Floyd所有结点最短+Bellman-Ford算法+SPFA+Dijsktra算法+Tarjan算法+最小生成树(prim+kruskal) )
  20. 黑马程序员——OC基础---核心语法(id,构造方法,Category,description,SEL)

热门文章

  1. ubuntu 12.04 开启root
  2. 数字化转型是什么?核心又是什么呢?
  3. Algs4-1.4.8计算输入文件中相等的整数对的数量
  4. 细说多线程(六) —— 异步 SqlCommand
  5. 《Abaqus GUI程序开发指南(Python语言)》——2.5 动态类型简介
  6. [Python爬虫] 之十二:Selenium +phantomjs抓取中的url编码问题
  7. http接口测试工具——RESTClient
  8. 【AaronYang风格】第一篇 CodeFirst 初恋
  9. C# 枚举在项目中的应用总结
  10. SAP 库存相关表格