今日一言:
当人们做不到一些事情的时候,
他们就会对你说你也同样不能。
??——《当幸福来敲门》
栈: 限定仅在表尾进行插入或删除操作的线性表。
LIFO结构: 后进先出。
FILO结构: 先进后出。
#include <stdio.h>
#include <stdlib.h>
#define NullElem -1
typedef int Elem;
typedef struct{
Elem *base;
Elem *top;
int size;
int MaxSize;
}SqStack;
// 初始化线性表
void initSqStack(SqStack *stack, int maxSize){
stack->base = (Elem *)malloc(sizeof(Elem)*maxSize);
stack->top = stack->base;
stack->size = 0;
stack->MaxSize = maxSize;
}
// 入栈
void pushSq(SqStack *stack, Elem elem){
if( stack->size >= stack->MaxSize ) return;
stack->top++;
stack->size++;
*stack->top = elem;
}
// 出栈
Elem popSq(SqStack *stack){
if( !stack->size ) return NullElem;
Elem elem = *stack->top;
stack->top--;
stack->size--;
return elem;
}
// 获取当前栈长度
int getSize(SqStack *stack){
return stack->size;
}
// 获取栈容量
int getMaxSize(SqStack *stack){
return stack->MaxSize;
}
队列: 队列是一种先进先出的线性表。
FIFO结构: 先进先出。
知识让你看得懂淘宝简介在说什么。???
#include <stdio.h>
#include <stdlib.h>
#define NullElem 0
typedef int Elem;
typedef struct{
Elem *data;
int front;
int rear;
int size;
int MaxSize;
}SqQueue;
// 初始化线性表
void initSqQueue(SqQueue *queue, int maxSize){
queue->data = (Elem *)malloc(sizeof(Elem)*maxSize);
queue->rear = 0;
queue->front = 0;
queue->size = 0;
queue->MaxSize = maxSize;
}
// 入队
void enSqQueue(SqQueue *queue, Elem elem){
if( queue->size >= queue->MaxSize ) return;
*(queue->data+queue->rear) = elem;
queue->rear = (queue->rear+1)%queue->MaxSize;
queue->size++;
}
// 出队
Elem deSqQueue(SqQueue *queue){
if( !queue->size ) return NullElem;
Elem elem = *(queue->data+queue->front);
queue->front = (queue->front+1)%queue->MaxSize;
queue->size--;
return elem;
}
// 获取当前队列长度
int getSize(SqQueue *queue){
return queue->size;
}
// 获取队列容量
int getMaxSize(SqQueue *queue){
return queue->MaxSize;
}
// 调试
void main(void){
int i;
SqQueue queue;
initSqQueue(&queue,50);
for( i = 0 ; i<10; i++){
enSqQueue(&queue,i);
printf("%d\n",i);
}
putchar(‘\n‘);
for( i = 0 ; i<5; i++){
printf("%d\n",deSqQueue(&queue));
}
putchar(‘\n‘);
for( i = 50 ; i<55; i++){
enSqQueue(&queue,i);
printf("%d\n",i);
}
putchar(‘\n‘);
int size = getSize(&queue);
for( i = 0 ; i<size; i++){
printf("%d\n",deSqQueue(&queue));
}
}
原文:https://www.cnblogs.com/rcklos/p/12907613.html