算法与数据结构之栈的顺序存储

#include<stdio.h>
#include<windows.h>
#include<malloc.h>
#define maxsize 50
typedef int elemtype;
typedef struct //定义
{
elemtype data[maxsize];
int top;

}sqstack;

void initstack(sqstack *&s) //初始化
{
s=(sqstack *)malloc(sizeof(sqstack));
s->top=-1;

}

void push(sqstack *&s) //进栈
{
char e;
getchar();
printf("请输入需进栈的元素:");
scanf("%c",&e);
if(s->top>maxsize-1)
printf("栈满,错误!\n");
else
{
s->top++;
s->data[s->top]=e;
printf("进栈成功\n");
}

}

void gettop(sqstack *s) //取栈顶元素
{
char t;
if(s->top==-1)
printf("栈空,取值失败!\n");
else
{
t=s->data[s->top];
printf("取值成功,栈顶元素为:%c\n",t);
}

}

void stackempty(sqstack *s) //判断栈是否为空
{
if(s->top==-1)
printf("栈为空\n");
else
printf("栈不为空\n");

}

void pop(sqstack *&s) //出栈
{
char e;
if(s->top==-1)
printf("栈为空,出栈失败\n");
else
{
e=s->data[s->top];
s->top--;
printf("出栈成功,出栈元素为:%c\n",e);
}

}

int length(sqstack *s) //求栈长
{
if(s->top==-1)
return(-1);
else
return(s->top+1);

}

void destroy(sqstack *&s) //销毁栈
{
char t;
getchar();
printf("确定要销毁栈请输入y 否则不销毁:");
scanf("%c",&t);
if(t=='y')
{
free(s);
printf("销毁成功\n");
exit(0);
}
else
printf("栈未销毁\n");

}

void output(sqstack *s)
{
int m,n=s->top;
m=length(s)+1;
if(s->top==-1)
printf("栈为空\n");
else
{
printf("出栈序列为:");
for(;m>0;m--)
{
printf(" %c",s->data[s->top]);
s->top--;
}
printf("\n");
s->top=n;
}

}

void main()
{
sqstack *s;

int m;
initstack(s);
while(1)
{
printf("请选择:");
printf(" 1 进栈\n");
printf(" 2 判断栈是否为空\n");
printf(" 3 取栈顶元素\n");
printf(" 4 出栈\n");
printf(" 5 销毁栈\n");
printf(" 6 求栈的长度\n");
printf(" 7 输出出栈序列\n");
printf(" 8 退出\n");
scanf("%d",&m);
switch(m)
{
case 1:push(s);break;
case 2:stackempty(s);break;
case 3:gettop(s);break;
case 4:pop(s);break;
case 5:destroy(s);break;
case 6:printf("栈的长度为%d\n",length(s));break;
case 7:output(s);break;
case 8:exit(0);
default:printf("输入错误,请重新输入\n");
}
}
}

时间: 2024-10-03 06:29:01

算法与数据结构之栈的顺序存储的相关文章

浅谈算法和数据结构 一 栈和队列

最近晚上在家里看Algorithems,4th Edition,我买的英文版,觉得这本书写的比较浅显易懂,而且"图码并茂",趁着这次机会打算好好学习做做笔记,这样也会印象深刻,这也是写这一系列文章的原因.另外普林斯顿大学在Coursera 上也有这本书同步的公开课,还有另外一门算法分析课,这门课程的作者也是这本书的作者,两门课都挺不错的. 计算机程序离不开算法和数据结构,本文简单介绍栈(Stack)和队列(Queue)的实现,.NET中与之相关的数据结构,典型应用等,希望能加深自己对这

算法与数据结构之栈的链式存储

#include<stdio.h> #include<windows.h> #include<malloc.h> typedef int elemtype; typedef struct linknode //链表的定义 { elemtype data; struct linknode *next; } listack; void initstack(listack *&s) //初始化 { s=(listack *)malloc(sizeof(listack)

算法与数据结构之队列的顺序存储

#include<stdio.h>#include<windows.h>#include<malloc.h> #define maxsize 100 typedef char elemtype; typedef struct //队列的定义{elemtype data[maxsize];int front,rear; }sqqueue; void initqueue(sqqueue *&q) //队列的初始化{q=(sqqueue *)malloc(sizeof

数据结构的C++实现之栈的顺序存储结构

栈(stack)是限定在表尾进行插入和删除操作的线性表.我们把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),栈又称为后进先出(Last In First Out)的线性表,简称LIFO结构.   示例程序:(改编自<大话数据结构>) #include <iostream> using namespace std; #define MAXSIZE 20 typedef int ElemType; typedef struct { ElemType data[

数据结构基础之栈的顺序存储表示与实现

  一.栈的定义 栈是限定仅在表尾进行插入或删除操作的线性表. 栈的表尾称为栈顶,表头称为栈底,不含元素的空表称为空栈. 栈的抽象数据类型定义: ADT Stack{ 数据对象:D={ai|ai(- ElemSet,i=1,2,...,n,n>=0} 数据关系:R1={|ai-1,ai(- D,i=2,...,n} 基本操作: InitStack(&S) 构造一个空栈S DestroyStack(&S) 栈S存在则栈S被销毁 ClearStack(&S) 栈S存在则清为空栈

021_《Delphi算法与数据结构》

<Delphi算法与数据结构> Delphi 教程 系列书籍 (021) <Delphi算法与数据结构> 网友(邦)整理 EMail: shuaihj@163.com 下载地址: Pdf 附书源码     原书名: The Tomes of Delphi Algorithms and Data Structures 原出版社: Wordware Publishing 作者: [美]Julian Bucknall 译者: 林琪 朱涛江 丛书名: Delphi技术系列 出版社:中国电力

数据结构有关栈的问题

问题描述 数据结构有关栈的问题 一个栈的入栈序列是12345,则不可能的输出序列为() A.35421 B.32451 C.12345 D.54321 答案是.'D请帮忙讲一下这类题的做法,谢谢了 解决方案 <数据结构>第三章 栈和队列问题回收站数据结构:栈与递归(Hanoi塔问题)数据结构算法问题 栈与队列的应用 解决方案二: D我觉得也是可以的啊,你这题目是不是没放完整? 栈是先进后出,1->5依次进入,再依次弹出 A/B/C/D都可以,除非加了栈大小为4的条件 解决方案三: ABC

PHP常用算法和数据结构示例(必看篇)

实例如下: </pre><pre name="code" class="php"><?php /** * Created by PhpStorm. * User: qishou * Date: 15-8-2 * Time: 上午9:12 */ header("content-type:text/html;charset=utf-8"); $arr = array(3,5,8,4,9,6,1,7,2); echo im

纸上谈兵: 算法与数据结构

算法和数据结构是计算机科学的核心内容.作为程序员,编程是我们的实战项目.然而,写出程序还不够.一个程序在应对一些大型而复杂的情况时,会耗费大量的时间.我们可以很容易写出一个从文件中找到一个词的程序,比如逐词扫描,看是否相符.但如果我们的文件有几十TB,而且要从文件中找到上百个词,逐个扫描的办法就几乎不可行.我们需要优化程序,以便我们的程序可以应对复杂问题.算法研究解决问题的方法,而数据结构则是设计一种更好的组织数据和使用数据的方式.两者有很强的相互依赖关系,所以往往放在一起讨论.   我将这一系