IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 数据结构与算法[栈与队列] -> 正文阅读

[数据结构与算法]数据结构与算法[栈与队列]


提示:以下是本篇文章正文内容,下面案例可供参考

一、堆栈结构和队列结构

1、什么是堆栈和队列?

堆栈和队列都是储存数据的结构,二者的不同在于储存方式不同,堆栈的储存是单开口,像是一个木桶,往里面放东西也只能从开口把东西拿出来,后进先出,队列是双开口,顺序储存数据,又顺序拿出数据,先进先出。
堆栈支持的操作:push pop
队列支持的操作:in out

2、堆栈和队列的结构

在这里插入图片描述

3、数组栈和链表栈的实现(java语言实现)

数组实现栈

public class stack
{
static final int CAPACITY=100;//容量定义
int top;
int stack[];//声明stack
public stack()
{
top = -1;
stack = new int[capacity];
}//初始化stack
}
//push
public boolean push(int val)
{
if(top>=(capacity -1))
{
system.out.println("stack overdflow.");
return false;
}
stack[++top]=val;
return true;
}
//pop
public int pop()
{
if(top<0)
{
system.out.println("stack unflow");
return 0;
}
int element =tack[top--];//后进先出 ,将top元素输出,top--
return element;
}
//Peek获取头元素

public int peek()
{
if(top<0)
{
system.out.println(“stack underflow”);
return 0;
}
int element = stack[top];
return element;
}

//empty判空
public boolean isempty()
{
return top<0;
}

链表实现栈

public class ListStack
{
static class stackNode
{
int val;
stackNode next;//节点
stackNode(int val)//节点的值
{
this.val=val;
}

}
stackNode top;//因为栈的顺序是后进先出,因此链表栈只用记录头节点即可
public ListStack()//节点指针
{
top =null;
}
}

//链表堆栈的push
public void push(int val)
{
stackNode newNode =new stackNode(val);
if(top ==null)
{
top = newNode;
}
else
{
stacNode temp = top;
top = newNode;
newNode.next= temp;
}
system.our.println(va+“is pushed to stack”);
}
//链表栈的pop
public int pop()
{
if(top ==null)
{
system.our.println(“stack is empty”);
return integer.min_value;
}
int poped = top.val;
top = top.next;
return poped;
}
//链式栈返回头节点 peek
public int peek()
{
if(top ==null)
{
system.out.println(“stack is empty”);
return integer.minvalue;
}
return top.val;
}
//判空方法
public boolean isEmpty()
{
return top ==null;
}

4、数组队列和链表队列的实现(java语言实现)

数组实现队列

public class ArrayQueue
{
int front,rear,size;
int capacity;
int array[];
public ArrayQueue(int capacity)
{
this.capacity=capacity;
front=rear=size=0;
array=new int[capacity];
}
}
//enqueue
public void enqueue(int item)
{
if(isFull())return;
array[rear]=item;
rear=(rear+1)%capacity;
size++;
system.out.println(item+"is enqueue");
//dequeue
public int dequeue()
{
if(isEmpty())
return Integer.min_value;
int item=array[front];
front =(front +1)%capacity;
size--;
return item;
}

}
//peek返回队列的头节点
public int peek()
{
if(isempty())
return integer.min_value;
return array[front];//直接返回头节点
public boolean isFull()
{
return size == capacity;
}
public boolean isEmpty()
{
return size ==0;
}
}

链式实现队列

public class ListQueue
{
QueueNode front;
QueueNode rear;
static class QueueNode
{
int value;
QueueNode next;
public QueueNode(int value)
{
this.value=value;
}
}
}
//enqueue
public void enqueue(int value)
{
QueueNode newNode = new QueueNode(value);
if(this.rear==null)
{
this.front=this.rear=newNode;
return;
}
this.rear.next=newNode;
this.rear=newNode;
}
//dequeue链表队列从头删除元素 
public int dequeue()
{
if(this.front==null)
{
system.out.println("the queue is empty");
return integer.min_value;
}
QueueNode frontNode =this.front;
this.front =this.front.next;
if(this.front==null)
{
this.rear=null;
}
return frontNode.value;
}
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-01-08 14:16:53  更:2022-01-08 14:18:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 18:44:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码