栈和队列基本接口未完

本文介绍了一个使用C语言实现的简单栈和队列数据结构。栈采用顺序存储方式,支持基本操作如压栈、弹栈及获取栈顶元素等。队列部分提供了队列的基本概念,并预留了队列操作的函数框架。

#include<stdio.h>
#include<stdlib.h>
//栈和队列
typedef int STDataType;

//顺序结构实现,实现一个更简单的顺序表
typedef struct stack
{
STDataType* _data;
int _size;
int _capacity;
}stack;

void initStack(stack* st)
{
if (st == NULL)
return;
st->_data = NULL;
st->_size = st->_capacity = 0;
}

void checkCapacity(stack* st)
{
if (st->_size == st->_capacity)
{
int newCap= st->_capacity = 0 ? 1 : 2 * st->_capacity;
st->_data = (STDataType*)realloc(st->_data, sizeof(STDataType) * newCap);
st->_capacity = newCap;
}
}

void stackPush(stack* st, STDataType val)
{
//尾插
if (st == NULL)
return;
checkCapacity(st);
st->_data[st->_size++] = val;
}

void stackPop(stack* st)
{
if (st == NULL||st->_size ==0)
return;
//删除就是看不见了
–st->_size;
}

// 获取栈顶元素
STDataType stackTop(stack* st)
{
return st->_data[st->_size - 1];

}
// 获取栈中有效元素个数

int stackSize(stack* st)
{
if (st == NULL)
return 0;
return st->_size;

}
// 检测栈是否为空,如果为空返回非零结果,如果不为空返回0
int stackEmpty(stack* st)
{
if (st == NULL || st->_size==0)
return 1;
else
return 0;
}

// 销毁栈
void stackDestroy(stack* st)
{

}

void test()
{
stack st;
initStack(&st);

stackPush(&st, 1);
stackPush(&st, 2);
stackPush(&st, 3);
stackPush(&st, 4);

while (!stackEmpty(&st))
{
	printf("%d ", stackTop(&st));
	stackPop(&st);

}
printf("\n");

}

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

//队列
//1.连续结构
//入队:尾插/头插
//出队:头删/尾删
// 链式结构:表示队列
//非连续的结构:带头的循环双向
//入队 尾插/头删
//出队 头删/尾删

typedef int QDataType;
typedef struct QNode
{
struct QNode* _next;
QDataType _data;
}QNode;
// 队列的结构
typedef struct Queue
{
//头尾指针
QNode* _head;
QNode* _tail;
}Queue;

// 初始化队列
void initQueue(Queue* q);
// 队尾入队列
void queuePush(Queue* q, QDataType data);
{
//尾插

}
// 队头出队列
void queuePop(Queue* q);
{
//头删

}
// 获取队列头部元素
QDataType queueFront(Queue* q);
// 获取队列队尾元素
QDataType queueBack(Queue* q);
// 获取队列中有效元素个数
int queueSize(Queue* q);
{
//遍历
}
// 检测队列是否为空,如果为空返回非零结果,如果非空返回0
int queueEmpty(Queue* q);
// 销毁队列
void queueDestroy(Queue* q);

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值