栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言实现顺序栈

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言实现顺序栈

C语言实现顺序栈 main.c
#include "stack.h"

void test();

ElementType dataArray[] = {
    {1,"侠客行"},
    {2,"将进酒"},
    {3,"神来之笔"},
    {4,"青莲剑歌"}
};


int main()
{
    test();
    return 0;
}


void test(){
    SeqStack  seqstack;
    ElementType * element = (ElementType *)malloc(sizeof(SeqStack));
    InitSeqStack(&seqstack);
    for (int i=0;i<4;i++){
        PushSeqStack(&seqstack,dataArray[i]);
        printf("当前入栈:%dt%s.n",dataArray[i].id,dataArray[i].name);
    }
    PopSeqStack(&seqstack,element);
    printf("当前出栈:%dt%s.n",element->id,element->name);
}

stack.h
#ifndef STACK_H_INCLUDED
#define STACK_H_INCLUDED

#include 
#include 
#define MAX_SIZE 255
#define TRUE 1
#define FALSE 0

typedef struct {
    int id;
    char * name;
}ElementType;

//定义栈的顺序存储方式
typedef struct SeqStack{
    ElementType elements[MAX_SIZE];     //顺序栈中用来存放数据元素的数组
    int top;                            //栈顶(数组中元素的下标),如果为-1则证明栈为空
    int length;                         //当前栈的元素个数
}SeqStack;

//初始化栈
void InitSeqStack(SeqStack * seqstack);

//元素入栈,返回插入结果:true或false
int PushSeqStack(SeqStack * seqstack,ElementType element);

//出栈,返回出栈结果:true或false
int PopSeqStack(SeqStack * seqstack,ElementType * element);

//清空栈
void ClearSeqStack(SeqStack * seqstack);

//返回栈顶元素
void GetTopElement(SeqStack * seqstack,ElementType * element);

#endif // STACK_H_INCLUDED

stack.c
#include "stack.h"

//初始化栈
void InitSeqStack(SeqStack * seqstack){
    seqstack->top = -1;
    seqstack->length = 0;
}

//元素入栈,返回插入结果,true或false
int PushSeqStack(SeqStack * seqstack,ElementType element){
    if(seqstack->top == MAX_SIZE-1){
        printf("栈已满.");
        return FALSE;
    }
    seqstack->top++;           //栈顶指针+1,以便加入新的元素
    seqstack->elements[seqstack->top] = element;
    seqstack->length++;
    return TRUE;
}

//出栈,返回出栈结果:true或false
int PopSeqStack(SeqStack * seqstack,ElementType * element){
    if (seqstack->top == -1){
        printf("空栈,无法出栈.n");
    }
    *element = seqstack->elements[seqstack->top]; //放回栈顶指向的元素
    seqstack->length--;
    seqstack->top--;
    return TRUE;
}

//清空栈
void ClearSeqStack(SeqStack * seqstack){
    seqstack->length = 0;
    seqstack->top = -1;
}

//返回栈顶元素
void GetTopElement(SeqStack * seqstack,ElementType * element){
    if (seqstack->top == 1){
        printf("空栈.");
        element = NULL;
        return;
    }
    *element = seqstack->elements[seqstack->top];
}

链栈


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/290089.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号