1、栈和队列

本文介绍了栈和队列的基本概念,栈作为后进先出(LIFO)的数据结构,队列作为先进先出(FIFO)的结构。详细阐述了栈的链表实现,包括创建Node类,定义栈顶节点及计数,以及push和pop方法的实现。同时,简要提及了栈的数组实现。对于队列,提到了其与栈的相似性,并指出在队列中,enqueue操作发生在尾部,dequeue则从头部开始。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、基本概念:

栈(stack)是一种后进先出(last in first out,LIFO)的数据结构。

队列(queue)是一种先进先出(first in first out,FIFO)的结构。如下图所示:



2、实现:

(1)栈(stack)的链表实现

首先定义一个内部类来保存每一个链表的节点,该节点包括当前的值以及指向下一个的值,然后建立一个节点保存位于栈顶的值以及记录栈的元素个数。
代码实现:

class Node{
    public T Item {get;set;}
    public Node Next {get;set;}
}

private Node first = null;
private int number = 0;


现在来实现push方法---即向栈顶压入一个元素,保存原先的位于栈顶的元素,然后新建一个新的栈顶元素,将该元素的下一个指向原先的栈顶元素。整个Pop过程如下:


实现代码:


Pop方法也很简单,首先保存栈顶元素的值,然后将栈顶元素设置为下一个元素:


代码实现:




栈的数组实现:可以使用数组来存储栈中的元素Push的时候,直接添加一个元素S[N]到数组中,Pop的时候直接返回S[N-1].

首先,我们定义一个数组,然后在构造函数中给定初始化大小,Push方法实现如下,就是集合里添加一个元素:


Pop方法:



Queue的实现:Queue是一种先进先出的数据结构,和Stack一样,他也有链表和数组两种实现,理解了Stack的实现后,Queue的实现就比较简单了。



Dequeue方法就是返回链表中的第一个元素,这个和Stack中的Pop方法相似:



和Stack的实现方式不同,在Queue中,我们定义了head和tail来记录头元素和尾元素。当enqueue的时候,tial加1,将元素放在尾部,当dequeue的时候,head减1,并返回。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值