栈只在表尾插入和删除的线性表。
队列只在队尾插入,队头删除。
栈
表尾为栈顶,表头为栈底,修改特点为后进先出(LIFO),定义栈的结构体时,定义指针*base(栈底指针),*top(栈顶指针)。
对于*base一般空表为NULL,而*top有多种情况,其中指向栈顶元素时,当为空栈时,*top=-,,当指向的为将入栈的元素的位置时,空栈为*top=0;
入栈和出栈的过程中*base=栈底元素,除空栈外不改变,而*top插入元素增1;删除则减1;
出栈入栈顺序:
例:ABCD(四种不同元素),14种出栈顺序 //判断规则:每一位之后顺序在它之后的元素,都应该是降序的,每一位都满足。(反之,升序)。
队列
先进先出的线性表(FIFO)。即出队顺序等于入队顺序。
一般为顺序存储设头尾指针,分别为front、rear。插入时rear(尾指针)增1;删除时front(头指针)增1,初始化时front=rear=0;front指向队头元素,rear指向队尾元素的下一位。
且为防止假性溢出,一般为循环队列。
其中队空:Q.front==Q.rear;
队满:(Q.rear +1)%MAXQSIZE==Q.front;//这种情况下会有一位置空;