03、栈和队列

03、栈和队列

1、栈的基本概念

逻辑结构:

操作受限的线性表:只允许在一端进行增加和删除的线性表。

特点:先进后出

卡特兰数:

image-20230321211226440

2、顺序栈的实现

定义:

typedef struct{
   
	int data[Maxsize];
	int top;
}Stack;

top是指向栈顶元素

进栈和出栈操作:

bool Push(SqStack *s,int x){
   
	if(s->top == -1){
   
		return false;
	}
	if(s->top >= Maxsize-1){
   
		return false;
	}
	s->top++;
	s->data[s->top] = x;
	return true;
} 

bool Pop(SqStack *s,int *x){
   
	if(s->top == -1){
   
		return false;
	}
	*x = s->data[s->top];
	s->top--;
	return true;
}

共享栈:

03、栈和队列_第1张图片

销毁时内存自动回收

3、链栈

和线性表当中的链表一样,只是进栈和出栈操作都是对头结点进行后插和后删操作一样。

//带头结点初始化
bool InitLink(LinkList *p){
   
	*p = (LNode*)malloc

你可能感兴趣的:(链表,数据结构,c++)