#include"stack.h"
int main()
{
stacktest();
//testQueue();
system("pause");
return 0;
}
#pragma once
#include<stdlib.h>
#include<stdio.h>
#include<assert.h>
#include<Windows.h>
typedef int DataType;
typedef struct Stack1{
DataType array[100];
int top;
} Stack1;
typedef struct Stack{
DataType array[100];
int top;
int top1;
} Stack;
// 初始化
void StackInit(Stack *pStack);
// 压栈
void StackPush(Stack *pStack, DataType data);
// 出栈
void StackPop(Stack *pStack);
// 返回栈顶元素
DataType StackTop(Stack *pStack);
// 判断是否为空
// 1 空
// 0 不空
int StackIsEmpty(Stack *pStack);
// 返回数据个数
int StackSize(Stack *pStack);
//取最小值
int stackMin(Stack *pStack);
//两个栈实现队列
void StackPush1(Stack *pStack1, Stack *pStack2, DataType data);
// 初始化
void StackInit(Stack1 *pStack)
{
assert(pStack);
pStack->top = 0;
//pStack->top1 = 1;
}
//压栈
void StackPush2(Stack1 *pStack, DataType data)
{
assert(pStack);
pStack->array[pStack->top] = data;
pStack->top++;
}
void StackPop(Stack1 *pStack)
{
assert(pStack);
pStack->top--;
}
// 返回栈顶元素
DataType StackTop(Stack1 *pStack)
{
assert(pStack);
assert(pStack->top>0);
return pStack->array[pStack->top-1];
}
// 判断是否为空
// 1 空
// 0 不空
int StackIsEmpty(Stack *pStack)
{
assert(pStack);
if (pStack->top == 0){
return 1;
}
else{
return 0;
}
}
//返回数据个数
int StackSize(Stack *pStack)
{
assert(pStack);
return pStack->top;
}
#pragma once
#include<stdlib.h>
#include<stdio.h>
#include<windows.h>
#include<assert.h>
typedef int QDataType;
typedef struct QNode {
QDataType data;
struct QNode *pNext;
} QNode;
typedef struct Queue {
QNode *pFront;
QNode *pRear;
int size;
} Queue;
// 初始化
void QueueInit(Queue *pQueue);
// 入队列
void QueuePush(Queue *pQueue, QDataType data);
// 出队列
void QueuePop(Queue *pQueue);
// 返回队首元素
QDataType QueueFront(Queue *pQueue);
// 判断是否为空
// 1 空
// 0 不空
int QueueIsEmpty(Queue *pQueue);
// 返回数据个数
int QueueSize(Queue *pQueue);
// 初始化
void QueueInit(Queue *pQueue)
{
assert(pQueue);
pQueue->pFront = NULL;
pQueue->pRear = NULL;
pQueue->size = 0;
}
// 入队列
void QueuePush(Queue *pQueue, QDataType data)
{
assert(pQueue);
QNode *QNewNode = (QNode *)malloc(sizeof(QNewNode));
QNewNode->data = data;
QNewNode->pNext = NULL;
pQueue->size++;
if (pQueue->pRear == NULL){
pQueue->pFront = pQueue->pRear = QNewNode;
}
pQueue->pRear->pNext = QNewNode;
pQueue->pRear = QNewNode;
}
// 出队列
void QueuePop(Queue *pQueue)
{
assert(pQueue);
assert(pQueue->size>0);
pQueue->size--;
QNode *tmp=pQueue->pFront;
pQueue->pFront = pQueue->pFront->pNext;
free(tmp);
if (pQueue->pFront == NULL){
pQueue->pRear = NULL;
}
}
// 返回队首元素
QDataType QueueFront(Queue *pQueue)
{
assert(pQueue);
assert(pQueue->size>0);
return pQueue->pFront->data;
}
// 判断是否为空
// 1 空
// 0 不空
int QueueIsEmpty(Queue *pQueue)
{
assert(pQueue);
if (pQueue->size == 0){
return 1;
}
return 0;
}
// 返回数据个数
int QueueSize(Queue *pQueue)
{
assert(pQueue);
return pQueue->size;
}
void testQueue()
{
Queue queue;
QueueInit(&queue);
QueuePush(&queue, 1);
QueuePush(&queue, 2);
QueuePush(&queue, 3);
QueuePush(&queue, 4);
system("pause");
}
栈与队列的基本操作
猜你喜欢
转载自blog.csdn.net/jiangxiaobai1995/article/details/81207486
今日推荐
周排行