数据结构- 栈和队列的实现
Posted mr.chenyuelin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构- 栈和队列的实现相关的知识,希望对你有一定的参考价值。
栈
采用数组实现
#include<iostream>
typedef int DataType;
using namespace std;
typedef struct Stack
{
DataType* _array;
int _top;// 表示有效元素个数 表示栈顶位置
int _capcity;//栈容量
}Stack;
void StackInit(Stack* s)
{
s->_array = (DataType*)malloc(sizeof(DataType));
s->_top = 0;
s->_capcity = 1;
}
void StackDestory(Stack* s)
{
if (s->_array)
{
free(s->_array);
s->_array = NULL;
s->_top = 0;
s->_capcity = 0;
}
}
void StackPush(Stack* p, DataType data)
{
//如果栈顶大于等于容量则扩容
if (p->_top >= p->_capcity)
{
p->_array = (DataType*)realloc(p->_array, sizeof(DataType)*(2 * p->_capcity));
p->_capcity *= 2;
}
p->_array[p->_top++] = data;
}
void StackPop(Stack* s)
{
if (s->_top < 0)return;
s->_top--;
}
DataType StackTop(Stack* s)
{
return s->_array[s->_top - 1];
}
int StackEmpty(Stack* s)
{
return s->_top == 0 ? 1 : 0;
}
int StackSize(Stack* s)
{
return s->_top;
}
int main()
{
}
队列
队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头
采用链表实现
#include<iostream>
typedef int DataType;
using namespace std;
typedef struct Node
{
DataType _data;
struct Node* next;
}Node,*pNode;
typedef struct Queue
{
pNode pHead;//队头
pNode pTail;//队尾
};
pNode CreateNode(DataType data)
{
pNode pNewNode = (pNode)malloc(sizeof(pNode));
pNewNode->_data = data;
pNewNode->next = nullptr;
return pNewNode;
}
void QueueInit(Queue* q)
{
q->pHead = nullptr;
q->pTail = nullptr;
}
void QueuePush(Queue* q, DataType data)
{
if (q->pHead == NULL)
{
q->pHead = q->pTail = CreateNode(data);
}
else
{
q->pTail->next = CreateNode(data);
q->pTail = q->pTail->next;
}
}
void QueuePop(Queue* q)
{
pNode t = q->pHead;
if (t != nullptr)
{
q->pHead = t->next;
free(t);
}
}
DataType QueueFront(Queue* q)
{
return q->pHead->_data;
}
DataType QueueBack(Queue* q)
{
return q->pTail->_data;
}
int QueueSize(Queue* q)
{
int count = 0;
pNode t = q->pHead;
while (t != nullptr)
{
count++;
t = t->next;
}
return count;
}
int QueueEmpty(Queue* q)
{
return q->pHead == nullptr;
}
以上是关于数据结构- 栈和队列的实现的主要内容,如果未能解决你的问题,请参考以下文章