精华内容
下载资源
问答
  • 代码支持实现初始化、空、满、取栈顶、进栈、出栈。 代码分为2部分,一个函数部分,一个主函数。 函数部分 #include<stdio.h> #include<malloc.h> #define maxsize 100 typedef struct { ...

    代码支持实现初始化、栈空、栈满、取栈顶、进栈、出栈。

    代码分为2部分,一个函数部分,一个主函数。

    函数部分

    #include<stdio.h>
    #include<malloc.h>
    #define maxsize 100
    typedef struct
    {
    	char data[maxsize];//栈
    	int top;//栈顶指针
    }sqstack;
    
    void init(sqstack *&s)//初始化栈s
    {
    	s=(sqstack *)malloc(sizeof(sqstack));
    	s->top=-1;//栈顶指针最初为-1
    }
    
    void destroy(sqstack *&s)//销毁栈
    {
    	free(s);
    }
    
    bool stackempty(sqstack *s)//判断栈是否为空
    {
    	return (s->top==-1);//为空,返回1
    }
    
    bool push(sqstack *&s,char e)//入栈操作
    {
    	if(s->top==maxsize-1)//判断栈是否溢出
    		return false;//溢出,报错
    	s->top++;//没溢出,栈顶指针指向上一个
    	s->data[s->top]=e;//将元素入栈至栈顶位置
    	return true;
    }
    
    bool pop(sqstack *&s,char &e)//出栈操作
    {
    	if(s->top==-1)//判断栈是否为空0
    		return false;//为空,报错
    	e=s->data[s->top];//元素e存储栈顶位置元素
    	s->top--;//栈顶指向下一个
    	return true;
    }
    
    bool gettop(sqstack *s,char &e)//取向栈顶元素
    {
    	if(s->top==-1)//判断栈是否为空0
    		return false;//为空,报错
    	else e=s->data[s->top];//将元素e存储栈顶元素
    	return true;
    }
    
    

    主函数

    #include<stdio.h>
    #include<malloc.h>
    #define maxsize 100
    typedef struct
    {
    	char data[maxsize];
    	int top;
    }sqstack;
    extern void init(sqstack *&s);
    extern void destroy(sqstack *&s);
    extern bool stackempty(sqstack *s);
    extern bool push(sqstack *&s,char e);
    extern bool pop(sqstack *&s,char &e);
    extern bool gettop(sqstack *s,char &e);
    void main()
    {
    	char e;
    	sqstack *s;
    	printf("栈s的基本运算如下:\n");
    	printf("(1)初始化栈s\n");
    	init(s);
    	printf("(2)栈为%s\n",(stackempty(s)?"空":"非空"));
    	printf("(3)依次进栈元素a,b,c,d,e\n");
    	push(s,'a');push(s,'b');push(s,'c');push(s,'d');push(s,'e');
    	printf("(4)栈为%s\n",(stackempty(s)?"空":"非空"));
    	printf("(5)出栈序列:");
    	while(!stackempty(s))
    	{
    		pop(s,e);
    		printf("%c",e);
    	}
    	printf("\n");
    	printf("(6)栈为%s\n",(stackempty(s)?"空":"非空"));
    	printf("(7)释放栈\n");
    	destroy(s);
    }

    输出

     有的时候,真的不得不承认,c语言和c++的差距,一些打着c语言的书,里面却是一些只有在c++里面才行得通的语法。

    展开全文
  • #include <stdio.h> #include <malloc.h> #define MaxSize 100 typedef char ElemType; typedef struct ...实际上就是分配一个顺序栈空间,并将栈顶指针设置为-1 */ void InitStack(SqStack
    #include <stdio.h>
    #include <malloc.h>
    #define MaxSize 100
    typedef char ElemType;
    typedef struct
    {
    	ElemType data[MaxSize];
    	int top;
    } SqStack;
    
    /*
    	1.初始化栈InitStack(&s),该运算创建一个空栈,由s指向它
    实际上就是分配一个顺序栈空间,并将栈顶指针设置为-1
    */ 
    void InitStack(SqStack *&s)
    {
    	s=(SqStack *)malloc(sizeof(SqStack));
    	s->top=-1;
    }
    
    //2.销毁栈DestroyStack(&s) 
    void DestroyStack(SqStack *&s)
    {
    	free(s);
    }
    
    //3.判断栈是否为空 StackEmpty(s) 
    bool StackEmpty(SqStack *s)
    {
    	return (s->top == -1);
    }
    
    //4.进栈Push(&s,e) 
    bool Push(SqStack *&s,ElemType e)
    {
    	if(s->top==MaxSize-1) //栈满的情况,即栈上溢出 
    		return false;
    	s->top++;
    	s->data[s->top]=e;
    	return true; 
    } 
    
    /*
    	5.出栈Pop(&s,&e),先将栈顶指针top处的元素取出放在e中
    然后将栈顶指针减1。 
    */ 
    bool Pop(SqStack *&s,ElemType &e)
    {
    	if(s->top==MaxSize-1)
    		return false;
    	e=s->data[s->top];
    	s->top--;
    	return true;
    } 
    
    //6.取栈顶元素GetTop(s,&e)
    bool GetTop(SqStack *s,ElemType &e)
    {
    	if(s->top == -1)
    		return false;
    	e=s->data[s->top];
    	return true;
    } 
    int main()
    {
    	ElemType e;
    	SqStack *s;
    	printf("(1)初始化栈s\n");
    	InitStack(s);
    	printf("(2)判断栈s是否非空:%s\n",(StackEmpty(s)? "是":"否"));
    	printf("(3)依次进栈元素a、b、c、d、e\n");
    	Push(s,'a');
    	Push(s,'b');
    	Push(s,'c');
    	Push(s,'d');
    	Push(s,'e');
    	printf("(4)判断栈s是否非空:%s\n",((StackEmpty(s))? "是":"否"));
    	printf("(5)输出出栈序列");
    	while(!StackEmpty(s))  //相当于StackEmpty() != NULL 
    	{
    		Pop(s,e);
    		printf("%c ",e);
    	}
    	printf("\n");
    	printf("(6)判断栈s是否非空:%s\n",((StackEmpty(s))? "是":"否"));
    	GetTop(s,e);
    	printf("(7)取栈顶元素:%c\n",e);
    	printf("(8)释放栈");
    	DestroyStack(s); 
    	return 0; 
    } 
    
    展开全文
  • 顺序栈基本运算算法

    2021-12-09 21:49:39
    //顺序栈基本运算算法 #include <stdio.h> #include <malloc.h> #define MaxSize 100 typedef char ElemType; typedef struct { ElemType data[MaxSize]; int top; //栈指针 } SqStack; //...

    //顺序栈基本运算算法
    #include <stdio.h>
    #include <malloc.h>
    #define MaxSize 100
    typedef char ElemType;
    typedef struct 
    {	
    	ElemType data[MaxSize];
    	int top;				//栈指针
    } SqStack;					//顺序栈类型
    void InitStack(SqStack *&s)
    {
    	s=(SqStack *)malloc(sizeof(SqStack));
    	s->top=-1;
    } 
    void DestroyStack(SqStack *&s)
    {
    	free(s);
    }
    bool StackEmpty(SqStack *s)
    {
    	return(s->top==-1);
    }
    bool Push(SqStack *&s,ElemType e)
    {
    	if (s->top==MaxSize-1)    //栈满的情况,即栈上溢出
    		return false;
    	s->top++;
    	s->data[s->top]=e;
    	return true;
    }
    bool Pop(SqStack *&s,ElemType &e)
    {
    	if (s->top==-1)		//栈为空的情况,即栈下溢出
    		return false;
    	e=s->data[s->top];
    	s->top--;
    	return true;
    } 
    bool GetTop(SqStack *s,ElemType &e)
    {
    	if (s->top==-1) 		//栈为空的情况,即栈下溢出
    		return false;
    	e=s->data[s->top];
    	return true;
    }
    int main()
    {
    	SqStack *s;
    	ElemType e;
    	InitStack(s);
    	Push(s,1);
    	Push(s,2);
    	Push(s,3);
    	Push(s,4);
    	printf("出栈顺序:");
    	while (!StackEmpty(s))
    	{
    		Pop(s,e);
    		printf("%d ",e);
    	}
    	printf("\n");
    	DestroyStack(s);
    	return 1;
    }

    展开全文
  • 实验3.1实现顺序栈各种基本运算的算法实验1.实验目的(1)掌握的定义、的方法及基本操作。(2)掌握将算法在VC++6.0语言环境下实现。(1)复习的定义,掌握的方法及操作。(2)复习C语言中数组及结构体的概念、定义方式。(3...

    实验3.1实现顺序栈各种基本运算的算法

    实验1.实验目的

    (1)掌握的定义、的方法及基本操作。

    (2)掌握将算法在VC++6.0语言环境下实现。

    (1)复习的定义,掌握的方法及操作。

    (2)复习C语言中数组及结构体的概念、定义方式。

    (3)实验的计算机中安装了Microsoft VC++ 6.0。

    编写一个控制台

    #include

    #include

    #define MaxSize 100

    typedef char ElemType;

    typedef struct

    {

    ElemType elem[MaxSize];

    int top;/*栈指针*/

    } SqStack;

    void InitStack(SqStack *&s)///初始化栈s

    {

    s=(SqStack *)malloc(sizeof(SqStack));

    s->top=-1;

    }

    void ClearStack(SqStack *&s)///释放栈s

    {

    }

    int StackLength(SqStack *s)///求栈s长度

    {

    }

    int StackEmpty(SqStack *s)///判断栈s是否为空栈

    {

    }

    int Push(SqStack *&s,ElemType e)///进栈元素e

    {

    return 1;

    }

    int Pop(SqStack *&s,ElemType &e)///出栈一个元素

    {

    return 1;

    }

    int GetTop(SqStack *s,ElemType &e)///取栈顶元素

    {

    return 1;

    }

    void DispStack(SqStack *s)///从栈顶到栈底输出元素

    {

    }

    #include

    #include

    #define MaxSize 100

    typedef char ElemType;

    typedef struct

    {

    ElemType elem[MaxSize];

    int top;/*栈指针*/

    } SqStack;

    extern void InitStack(SqStack *&s);

    extern void ClearStack(SqStack *&s);

    extern int StackLength(SqStack *s);

    extern int StackEmpty(SqStack *s);

    extern int Push(SqStack *&s,ElemType e);

    extern int Pop(SqStack *&s,ElemType &e);

    extern int GetTop(SqStack *s,ElemType &e);

    extern void DispStack(SqStack *s);

    void main()

    {

    ElemType e;

    SqStack *s;

    printf("(1)初始化栈s\n");

    InitStack(s);

    printf("(2)栈为%s\n",(StackEmpty(s)?"空":"非空"));

    printf("(3)依次进栈元素a,b,c,d,e\n");

    Push(s,'a');

    Push(s,'b');

    Push(s,'c');

    Push(s,'d');

    Push(s,'e');

    ClearStack(s);

    }

    2

    展开全文
  • 数据结构实验报告课程实验报告题目 链接顺序队列的基本运算班级 2010信息与计算科学班 姓名笑嘻嘻小 学号 笑嘻嘻 完成日期 笑嘻嘻小㈠实验要求: 编程实现链接顺序队列的基本运算。链接:插入元素,删除...
  • 1 #include 2 #include 3 #define STACK_INIT_SIZE 100//储存空间初始分配量4 #define STACKINCREMENT 10//存储空间分配增量5 #define OK 06 #define ERROR 17 ... //元素类型89 typedef struct{10 StackType *b...
  • 头文件Seqstack.h#define maxsize 6//const int maxsize = 6;// 顺序栈typedef struct seqstack{int data[maxsize];...main.c#include #include "Seqstack.h"// 栈的基本运算顺序栈上的实现// 1. 初始化int Ini...
  • 代码支持实现初始化、空、满、取栈顶、进栈、出栈。 代码 #include<stdio.h> #include<stdlib.h> #include<math.h> #define maxsize 100 typedef int status;//使后面可以使用status类型...
  • 顺序栈基本运算 栈的应用,先将所有的字符压入栈中,通过出栈一个个与数组str的字符从头到尾比较,根据栈的特性,先进后出,最先出栈的是字符串的尾 int Palindrome(char str[],int n) { SqStack st;//定义一个...
  • 顺序栈的实现 src/step1/SeqStack.cpp /************************************************************* 顺序存储的栈 实现文件 更新于2020年4月27日 *********************************************************...
  • 由于现在只学了C语言所以就写这个C语言版的基本操作这里说一下 :网上和书上都有这种写法 int InitStack(SqStack &p)&p是取地址 但是这种用法好像C并不支持 ,C++才支持,所以用C语言写就需要使用指针...
  • 顺序栈和链栈就像是运算受限制的数组和链表
  • 数据结构-栈基本运算的实现及其应用 第1关:顺序栈的实现 /************************************************************* 顺序存储的栈 实现文件 更新于2020年4月27日 ***************************************...
  • 顺序栈,即用顺序栈实现栈存储结构,使用栈存储结构操作数据元素必须遵守 "先进后出" 的原则。 如果你仔细观察顺序表(底层实现是数组)和栈结构就会发现,它们存储数据的方式高度相似,只不过栈对数据的存取过程...
  • 一、目的领会顺序栈存储结构和掌握顺序栈中各种基本运算算法设计;领会链栈存储结构和掌握链栈中各种基本运算算法设计。二、内容编写一个程序sqstack.cpp,实现顺序栈(假设栈中元素类型ElemType为char)的各种基本...
  • 顺序栈基本操作

    2021-09-18 21:21:45
    顺序栈的实现是十分简单的跟顺序表的顺序存储基本一致 顺序栈基本操作如下: #include<stdio.h> #include<stdlib.h> #define MaxSize 50//顺序栈的初始空间 #define Stackcream 10//存储空间分配...
  • 顺序栈:用一段连续的存储空间来存储栈中的数据元素,比较常见的是用数组来实现顺序栈 顺序存储结构:1.元素所占的存储空间必须连续(这里的连续是指的逻辑连续,而不是物理连续) 程序源代码: #include <...
  • 3.3的应用举例

    2021-08-01 22:36:53
    3.3的应用举例 Q1:设计一个算法判断合法的I(进栈)/O(出栈序列) //Q1 for(i = 0;i < n;i++) { //遍历str的所有字符 if(str[i] == 'I') //为'I'时进 Push(st,str[i]); else if(str[i] == 'O') //为'O'时...
  • 顺序栈 因为在C语言中学过链表,我就不仔细讲了,(主要是不想再学一遍哈哈)直接从栈与队列开始吧! 文章目录顺序栈一、栈是什么?二、栈的基本操作函数实现1.初始化操作,建立一个空栈2.入栈操作(push)3.出栈...
  • 关于顺序栈基本操作函数 此篇文章是写关于顺序栈顺序栈基本操作函数关于顺序栈基本操作函数1.定义一个栈2.初始化栈3.判断栈空4.入栈5.出栈6.取栈顶元素7.关于栈的部分主函数 1.定义一个栈 简单版 #define ...
  • 顺序栈基本操作的实现(C语言)栈基本操作顺序栈定义栈的初始化入栈出栈返回栈顶元素主函数 今天自学了下栈,简单实现C语言的栈的基本操作,学艺不精,请多指教。 栈 栈(stack)又名堆栈,它是一种运算受限的线性表...
  • Java的顺序栈和链式栈

    2021-03-09 17:04:51
    的定义是限制在表的一段进行插入和删除的运算的线性表,通常能够将插入、删除的一端为栈顶,例外一端称为底,当表中没有任何元素的时候称为空栈。通常删除(又称“退”)叫做弹出pop操作,每次删除的都是栈顶...
  • C语言栈的各种基本运算代码题目:实现顺序栈的各种基本运算,并在此基础上设计一个主程序完成如下功能:(1)初始化栈S;(2)判断栈S是否为空;(3)依次使元素a, b, c, d, e进栈;(4)判断栈S是否为空;(5)输出栈的长度;(6...
  • 满意答案gong1230112013.04.16采纳率:50%等级:12已帮助:13063人void ReverseString(char *a,int lenth) //逆转函数{int i;char c;initstack(&s);for(i=0;ifor(i=0;i}---------------------------------------...
  • (2)掌握顺序栈的入栈和出栈等基本操作算法实现。 (3)了解栈在解决实际问题中的简单应用。 2.上机内容 利用顺序栈基本操作实现将任意一个十进制整数转化为R进制(二进制、八进制)整数,主要包括: (1)定义栈的顺序...
  • 顺序串的基本运算

    2021-05-15 20:10:53
    顺序串的基本运算如下: (1)建立串s和串s1。 (2)输出串s。 (3)串s的长度。 (4)在串s的第9个字符位置插入串s1而产生串s2。 (5)输出串s2。 (6)删除串s第2个字符开始的5个字符而产生串s2 (7)输出串s2。 (8)将串s第2个...
  • 顺序栈基本操作(静态分布空间) //静态分配空间实现栈的基本操作 #include <stdio.h> #include <stdlib.h> #define Stack_Size 50 #define FALSE 0 #define TRUE 1 typedef int StackElementType; //...
  • 计算机二级考试公共基础知识点:及其基本运算2018年计算机二级考试公共基础知识点:及其基本运算考点5及其基本运算考试链接:考点5在笔试考试中,是一个必考的内容,在笔试考试中出现的几率为100%,主要是以...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 68,256
精华内容 27,302
关键字:

顺序栈的基本运算