#数据结构#

一、栈

<1>性质:先进后出

<2>操作:入栈(压栈)push

                 出战(弹栈)pop

二、顺序栈

1、声明

#ifndef _SEQSTACK_H_
#define _SEQSTACK_H_
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#define N 32

typedef int DataType;

typedef struct seqstack
{
    DataType data[N];
    int top;
}seqstack;

seqstack *SeqStackCreate();
bool SeqStackIsFull(seqstack *s);
bool SeqStackIsEmpty(seqstack *s);
void SeqStackPush(seqstack *s,DataType value);
void SeqStackPop(seqstack *s);

#endif

2、主函数

#include "seqstack.h"

int main(int argc, const char *argv[])
{



    return 0;
}

3、调用函数

3.1、初始化

#include "seqstack.h"

seqstack *SeqStackCreate()
{
    seqstack *s = (seqstack*)malloc(sizeof(seqstack));
    s -> top = -1;

}

3.2、判断表是否已满

bool SeqStackIsFull(seqstack *s)
{
    return s -> top == N - 1 ? 1 : 0;
}

3.3、判断表是否为空

bool SeqStackIsEmpty(seqstack *s)
{
    return s -> top == -1 ? 1 : 0;
}

3.4、入栈

void SeqStackPush(seqstack *s,DataType value)
{
    if(SeqStackIsFull(s))
    {
        printf("栈已满\n");
        return;
    }
    s -> top++;
    s -> data[s -> top] = value;
}

3.5、出栈

void SeqStackPop(seqstack *s)
{
    if(SeqStackIsEmpty(s))
    {
        printf("栈已空\n");
        return -1;
    }
    DataType value = s -> data[s -> top];
    s -> top--;
    return value;
}

三、链栈

1、声明

#ifndef _LINKSTACK_H_
#define _LINKSTACK_H_
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

typedef int DataType;

typedef struct node 
{
    DataType data;
    struct node *next;
}Node;

typedef struct Stack
{
    Node *top;
    int length;
}stack;

#endif

2、主函数

#include "linkstack.h"

int main()
{
    return 0;
}

3、调用函数

3.1、初始化

#include "linkstack.h"

void InitStack(stack *s)
{
    s -> top = NULL;
    s -> length = 0;
}

3.2、入栈

void push(stack *s,DataType num)
{
    if(NULL == s)
    {
        return;
    }
    Node *tmp = (Node*)malloc(sizeof(Node));
    tmp -> data = num;
    tmp -> next = NULL;
    
    tmp -> next = s -> top;
    s -> top = tmp;
    s -> length++;
}

3.3、出栈

DataType pop(stack *s)
{
    if(NULL == s)
    {
        retuen -1;
    }
    if(s -> top == NULL)
    {
        return -1;
    }
    Node *tmp = s -> tmp;
    DataType value = tmp -> data;
    s -> top = tmp -> next;
    free(tmp);
    s -> length--;
    return value;
}

3.4、栈顶

DataType GetTop(stack *s)
{
    if(NULL == s)
    {
        return -1;
    }
    if(NULL == s -> top)
    {
        return -1;
    }
    return s -> top ->data;


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值