软考19-上午题-栈和队列

栈、队列,都是线性结构

 

一、栈

1-1、栈的定义

只能通过访问他的一端来实现数据的存储和检索的线性结构。

特点:先进后出

软考19-上午题-栈和队列_第1张图片

不含数据元素的栈——空栈。

栈的典型应用,递归

软考19-上午题-栈和队列_第2张图片

1-2、栈的存储结构

1-2-1、栈的顺序存储——顺序栈

可以用数组实现。

(用地址连续的存储单元存放栈中的元素)

int[] arr = new int[10];

要预先定义栈的存储空间,即,栈空间的容量是有限的,所以,入栈的时候,要判断是否栈满。

1-2-2、栈的链式存储——链栈

软考19-上午题-栈和队列_第3张图片

头指针 = 栈顶指针 

StackNode{
    int data;
    StackNode next;
}
链栈的基本操作:

①初始化

top = null;

②判空

if(top == null){
    return true;
}else{
    return false;
}

③入栈

node.next = top;
top = node;

④出栈

if(isEmpty()){
    return false;
}
top = top.next;

⑤读栈顶元素

if(isEmpty()){
    return false;
}
return top;

 

1-3、栈的真题

真题1:

软考19-上午题-栈和队列_第4张图片

真题2:

软考19-上午题-栈和队列_第5张图片 

软考19-上午题-栈和队列_第6张图片

真题3:

软考19-上午题-栈和队列_第7张图片 

真题4:

软考19-上午题-栈和队列_第8张图片

真题5:

软考19-上午题-栈和队列_第9张图片 

真题6:

软考19-上午题-栈和队列_第10张图片 

真题7:

软考19-上午题-栈和队列_第11张图片 

真题8:

软考19-上午题-栈和队列_第12张图片 

软考19-上午题-栈和队列_第13张图片 

二、队列

2-1、队列的定义

允许在表的一端插入元素,表的另一端删除元素的线性表

特点:先进先出

软考19-上午题-栈和队列_第14张图片 

 

2-2、队列的存储结构

2-2-1、队列的顺序存储——顺序队列

数组实现。

用地址连续的存储单元存放栈中的元素。

1、顺序队列的基本操作:

①初始化

软考19-上午题-栈和队列_第15张图片

软考19-上午题-栈和队列_第16张图片 

注意:

        此时,队头、队尾指针,指向相同的位置!!!

②判空

if(front == rear){
    return true;
}else{
    return false;
}

③入队

q[rear] = x;
rear++;

注意:

        入队的时候,队尾指针要向后移,指向下一个元素的位置;队头指针不动。

软考19-上午题-栈和队列_第17张图片

④出队

// 判空
if(isEmpty()){
    return false;
}
front++;

软考19-上午题-栈和队列_第18张图片

注意:

        出队的时候,队头指针向后移。 

⑤读队头元素

if(isEmpty()){
    return false;
}
return q[front];

 

2、循环队列

软考19-上午题-栈和队列_第19张图片

此方式,队列存在一个问题,看似满了,实则没有满。

解决方式:循环队列。

软考19-上午题-栈和队列_第20张图片

此时,判空有问题:

软考19-上午题-栈和队列_第21张图片

2-2-2、队列的链式存储——链队列

为了便于操作,给链队列添加一个头节点

软考19-上午题-栈和队列_第22张图片

判空:头指针 = 尾指针,且均指向头结点。 

 

 1、链队列的基本操作软考19-上午题-栈和队列_第23张图片

④出队

软考19-上午题-栈和队列_第24张图片 

软考19-上午题-栈和队列_第25张图片

特殊情况,当链队列中只有一个节点的时候,删除队尾节点,tail队尾指针需要重新定位到队头指针的位置。

软考19-上午题-栈和队列_第26张图片 

软考19-上午题-栈和队列_第27张图片

软考19-上午题-栈和队列_第28张图片 

注意:

        链队列的入队、出队,不用遍历整个链表。

2-2-3、双端队列

软考19-上午题-栈和队列_第29张图片

软考19-上午题-栈和队列_第30张图片 

2-3、队列的真题

 真题1:软考19-上午题-栈和队列_第31张图片

 真题2:D

软考19-上午题-栈和队列_第32张图片

真题3:

软考19-上午题-栈和队列_第33张图片 

真题4:

软考19-上午题-栈和队列_第34张图片 

真题5:

软考19-上午题-栈和队列_第35张图片 

真题6:

软考19-上午题-栈和队列_第36张图片

真题7:

软考19-上午题-栈和队列_第37张图片 

真题8:

软考19-上午题-栈和队列_第38张图片

三、栈、队列真题

真题1:

软考19-上午题-栈和队列_第39张图片

利用两个栈可以模拟一个队列!!!

软考19-上午题-栈和队列_第40张图片 

真题2:

软考19-上午题-栈和队列_第41张图片

出队列的序列只有一种。 入队和出队序列是一样的。

真题3:

软考19-上午题-栈和队列_第42张图片 

真题4:

软考19-上午题-栈和队列_第43张图片

真题5:

软考19-上午题-栈和队列_第44张图片

真题6:

软考19-上午题-栈和队列_第45张图片 

你可能感兴趣的:(软考中级,学习,笔记)