`
12616383
  • 浏览: 51245 次
  • 性别: Icon_minigender_1
  • 来自: 待定
社区版块
存档分类
最新评论

链表栈与链表队列

阅读更多

链表栈与链表队列

 

链表实现的栈和队列,这里只展示实现过程,有不明的地方可以参看我的前面关于栈,队列和列表的说明

 

 

//栈:先进后出
class LinkStack{
	public static void main(String[] args) {
		LinkStack l = new LinkStack();
		l.push(1);
		l.push(2);
		l.push(3);
		l.displayStack();
		l.pop();
		l.displayStack();
	}
	
	public Link first;
	
	public LinkStack(){
		first = null;
	}
	
	public void push(int i){
		Link newLink = new Link(i);
		newLink.next = first;
		first = newLink;
	}
	
	public void pop(){
		if(isEmpty()){
			System.out.println("Stack is empty");
		}
		first = first.next;
	}
	
	public void displayStack(){
		if(isEmpty()){
			System.out.println("Stack is empty");
		}else{
			Link current = first;
			while(current != null){
				current.displayLink();
				current = current.next;
			}
		}
	}
	
	public boolean isEmpty(){
		return first == null;
	}
}
//链接点对象
class Link{
	public int iData;
	
	//关系子段,用于存储下一个链接点的位置
	public Link next;
	public Link(int id){
		this.iData = id;
	}
	public void displayLink(){
		System.out.println("{" + iData + "}");
	}
}

 

//队列:先进先出
class LinkQueue {
	public static void main(String[] args) {
		LinkQueue lq = new LinkQueue();
		lq.insert(1);
		lq.insert(2);
		lq.disPlay();
		lq.remove();
		System.out.println("remove----");
		lq.disPlay();
	}
	
	public Link first;

	public Link last;

	public LinkQueue() {
		first = null;
		last = null;
	}

	public boolean isEmpty() {
		return first == null;
	}

	public void insert(int value) {
		Link newLink = new Link(value);
		if (isEmpty()) {
			first = newLink;
		} else {
			last.next = newLink;
		}
		last = newLink;
	}

	public void remove() {
		if (isEmpty()) {
			System.out.println("LinkQueue is empty");
		} else {
			if (first.next == null) {
				last = null;
			}
			first = first.next;
		}
	}
	
	public void disPlay(){
		Link current = first;
		while(current!=null){
			current.displayLink();
			current = current.next;
		}
	}
}

// 链接点对象
class Link {
	public int iData;

	// 关系子段,用于存储下一个链接点的位置
	public Link next;

	public Link(int id) {
		this.iData = id;
	}

	public void displayLink() {
		System.out.println("{" + iData + "}");
	}
}

 

分享到:
评论

相关推荐

    java 队列 链表 栈

    本篇文章将详细讲解Java中的队列、链表和栈,这些概念是许多初学者和专业人士都需要掌握的基础知识。 首先,我们来谈谈队列。队列是一种先进先出(First In First Out,简称FIFO)的数据结构,类似于现实生活中的...

    数据结构之链表栈与队列

    在某些场景下,链表栈和链表队列相比数组实现的栈和队列,能更好地处理动态变化的大小需求。 在实际编程中,我们可能需要对这些数据结构进行优化,例如,循环链表可以避免空指针问题,提高效率;链表栈和链表队列...

    链表实现栈和队列(经典程序)

    本话题主要探讨如何使用链表来实现栈和队列这两种基本的数据结构。链表是一种动态数据结构,它允许在运行时添加或删除元素,而无需预先确定其大小。这使得链表成为实现栈和队列的理想选择。 栈是一种后进先出(LIFO...

    字符串 向量 链表 栈和队列

    本主题将深入探讨四种基本数据结构:字符串、向量、链表、栈和队列,这些是编程中最常见且实用的数据结构。 首先,我们来了解**字符串**。在编程中,字符串是由字符组成的序列,常用于处理文本信息。C++中的`std::...

    链表栈的实现

    链表栈是一种数据结构,它利用链表的特性来模拟栈的行为。栈是一种后进先出(LIFO)的数据结构,通常用于临时存储和处理数据。在链表栈中,元素不是存储在固定大小的数组中,而是通过节点链接在一起,每个节点包含一...

    数据结构链表,队列,栈源代码

    总的来说,理解和掌握链表、队列和栈的原理与实现是提升编程技能的关键步骤,它们是许多算法和复杂数据结构的基础。通过严蔚敏版的源代码,学习者可以更深入地了解这些概念在实际编程中的应用,从而提升解决问题的...

    数据结构(表,链表,栈,队列)的源代码

    这里我们将探讨标题和描述中提到的四种数据结构:表、链表、栈和队列,并结合源代码的学习来理解它们。 1. **表**(Array):表是最基础的数据结构,它是一个固定大小的数组,用于存储同类型的数据。在C语言中,...

    数据结构的链表,队列,栈(c)

    本资源包“数据结构的链表,队列,栈(c)”聚焦于三种基本的数据结构:链表、队列和栈。这些都是初学者在学习编程时必须掌握的基础知识,它们对于理解算法和编写高效的代码至关重要。 首先,我们来看链表。链表是...

    数组、链表、队列、栈数据结构特点,各自优点和缺点 数组和链表.pdf

    数组、链表、队列、栈数据结构特点,各自优点和缺点 在计算机科学中,数据结构是指用于组织和存储数据的方式。常见的数据结构包括数组、链表、队列、栈等。每种数据结构都有其特点、优点和缺点,本文将对这些数据...

    堆栈链表与队列链表的基本操作

    堆栈、链表和队列是三种基本的数据结构,广泛应用于各种软件开发中。本篇文章将详细探讨堆栈链表和队列链表的基本操作。 首先,让我们了解堆栈(Stack)的概念。堆栈是一种后进先出(LIFO,Last In First Out)的...

    模板线性表,链表,队列,栈的实现(C++实现)

    本文将深入探讨四个基本数据结构的C++实现:模板线性表、链表、队列和栈。这些数据结构在软件开发中扮演着至关重要的角色,它们提供了多种处理数据的方法,使得算法设计和程序优化变得更加灵活。 1. **模板线性表**...

    算法大全-面试题-链表-栈-二叉树-数据结构

    数据结构是组织和管理数据的方式,包括数组、链表、栈、队列、树、图等。选择合适的数据结构对于算法设计和程序效率至关重要。例如,数组适合随机访问,而链表适合动态变化大小;栈适合处理后进先出的问题,队列则...

    用链表实现队列栈 包括虚函数、指针

    链表分为单向链表、双向链表和循环链表等类型,本程序可能使用的是单向链表,因为队列和栈通常只需要头尾操作,不需要双向访问。 队列是一种先进先出(FIFO,First In First Out)的数据结构,类似于现实生活中的...

    数据结构:线性表、链表、队列、栈、串

    本主题将深入探讨线性表、链表、队列、栈这四种基本的数据结构,并以C++语言为例,通过相关源代码(stringData.cpp、seqList.cpp、node.cpp、seqQueue.cpp、linkQueue.cpp、linkStack.cpp、seqStack.cpp)来解析其...

    数据结构中链表,栈和队列,串的算法实现代码

    链表、栈、队列和串(字符串)是数据结构中的基本概念,这里我们将深入探讨它们以及相关的算法实现。 首先,链表是一种非连续的数据存储结构,其中每个元素称为节点,包含数据和指向下一个节点的引用。链表分为单向...

    数据结构代码 栈 链表 队列

    本压缩包包含对三种基本数据结构——栈、链表和队列的实现代码,这些都是编程基础中的基础。 首先,我们来详细了解栈(Stack)。栈是一种“后进先出”(LIFO)的数据结构,它的操作主要集中在一端,被称为栈顶。...

    数据结构链表,队列,栈和二叉树的各种操作

    例如,你可以实现链表的迭代和递归遍历,队列的循环缓冲区实现,栈的递归与非递归算法,以及二叉树的遍历算法(前序、中序和后序)。此外,还可以探索平衡二叉树(如AVL树和红黑树)及其自动保持平衡的特性,以及树...

    用C++写的双向循环链表派生栈和队列

    本文将详细讨论如何使用C++实现一个基于双向循环链表的派生栈和队列。 首先,我们要理解双向循环链表的基本概念。双向循环链表是一种链式存储结构,每个节点包含数据和两个指针,分别指向其前一个节点和后一个节点...

    c++链表队列的实现

    ### 二、链表队列与数组队列的区别 1. **动态扩展性**:链表队列的最大优势之一在于其可以动态扩展,不需要预先分配固定大小的空间,因此在空间管理上更为灵活。 2. **内存碎片**:链表队列可能会导致内存碎片化,...

Global site tag (gtag.js) - Google Analytics