1. 程式人生 > >資料結構三.用連結串列實現棧

資料結構三.用連結串列實現棧

程式碼如下:

package dataStruct;
 class Node {
	
	Object element;
	Node next;
	
	public Node(Object element){
		this(element,null);
	}
	
	/**
	 * 建立一個新的節點
	 * 讓他的next指向,引數中的節點
	 * @param element
	 * @param n
	 */
	public Node(Object element,Node n){
		this.element=element;
		next=n;
	}
	
	public Object getElement() {
		return element;
	}
	
}
public class LinkToStack {
	Node header;//棧頂元素
	int elementCount;//棧內元素個數
	int size;//棧的大小
	
	/**
	 * 建構函式,構造一個空的棧
	 */
	public LinkToStack(){
		header=null;
		elementCount=0;
		size=0;
	}
	
	/**
	 * 通過構造器自定義棧的大小
	 * @param size
	 */
	public LinkToStack(int size) {
		header=null;
		elementCount=0;
		this.size=size;
	}
	
	public void setHeader(Node header) {
		this.header=header;
	}
	
	public boolean isFull() {
		if (elementCount==size) {
			return true;
		}
		
		return false;
	}
	
	public boolean isEmpty() {
		if (elementCount==0) {
			return true;
		}
		
		return false;
	}
	
	/**
	 * 入棧
	 * @param value
	 */
	public void push(Object value) {
		if (this.isFull()) {
			throw new RuntimeException("Stack is Full");
		}
		//注意這裡面試將原來的header作為引數傳入,然後以新new出來的Node作為header
		header=new Node(value, header);
		elementCount++;
	}
	
	/**
	 * 出棧
	 * @return
	 */
	public Object pop() {
		if (this.isEmpty()) {
			throw new RuntimeException("Stack is empty");
		}
		Object object=header.getElement();
		
		header=header.next;
		
		elementCount--;
		
		return object;
	}
	
	/**
	 * 返回棧頂元素
	 */
	public Object peak(){
		
		if (this.isEmpty()) {
			throw new RuntimeException("Stack is empty");
		}
		
		return header.getElement();
	}
	
	public static void main(String[] args) {
		LinkToStack ls = new LinkToStack(20);
		ls.push("23");
		ls.push("33");
		System.out.println(ls.pop());
		
	}
}

相關推薦

資料結構.連結串列實現

程式碼如下: package dataStruct; class Node { Object element; Node next; public Node(Object element){ this(element,null); } /**

資料結構連結串列實現的括號匹配

完成以下程式,並在右邊空白處,對錯誤進行修改,並記錄下程式執行結果: 1. 編寫演算法,判斷一表達式中的括號是否配對,包括大、中、小三類括號。 連結串列版本: #include <cstdio> #include <cmath> #inclu

java版資料結構與演算法—連結串列實現

package com.zoujc; /** * 用連結串列實現棧 */ class MyLinkStack { private Link first; public MyLinkStack(){ first = null; } //判空

資料結構連結串列實現多項式運算

一元多項式的運算包括加法減法和乘法,而多項式的加法和乘法都可以依靠多項式的加法來實現,所以本文僅僅講解如何用連結串列實現一元多項式的加法。 數學上的一元多項式的表示是p(x) = p0 + p1 * x + p2 * x^2 + p3 * x^3 + … +

資料結構示例之連結串列實現

以下是“使用連結串列實現棧”的簡單示例: 1. 用c語言實現的版本 #include<stdio.h> #include<stdlib.h> struct s_node { int data; struct s_node *next; };

的建立-----連結串列實現

設計: 1、建立Node節點類(儲存連結串列的前節點和本節點儲存的元素) 2、節點儲存的是泛型資料 3、建立一個棧的介面----定義如下函式: 4、介面實現類(棧頂元素指標和連結串列元素計數器) 程式碼實現: 介面類:StackADT  publi

Java連結串列實現

上一篇實現了佇列,這一篇我們實現棧。 棧是後入先出的資料結構。 連結串列中插入資料有頭插法和尾插法,本篇我們使用頭插法。 不多說直接上程式碼 連結串列的節點定義和上一篇使用的是同一個,可以參考上一篇。 public class StackImpl<T> { p

十三 連結串列實現

用連結串列實現棧:     連結串列棧: package com.lt.datastructure.stackqueue; /* * 使用連結串列實現棧 */ public class LinkedListStack<E> implements Stack

java版資料結構與演算法—連結串列實現佇列

package com.zoujc.QueueLink; /** * 連結串列實現佇列 */ class FirstLastList { private Link first; private Link last; public FirstLastList(){

嚴蔚敏版資料結構——佇列(連結串列實現

佇列有兩種表示方式,我們再看連結串列實現: 個人感覺佇列也就是連結串列的一種特殊表,如果前面的連結串列知識通關了這裡隨便看看記住佇列的遊戲規則就行了。還是和前面一樣,先要有頭結點,總體來說就是單鏈表的插刪。 這裡與順序佇列不同的是不需要判斷佇列是不是滿了,連結串列最大的特點是動態分配節點空間

資料結構------使用單向連結串列實現簡單的學生成績管理操作

                                                  函式宣告  ypedef int status; typedef int ElemType; //連結串列節點及連結串列資料表示定義 typedef struct No

C語言資料結構之靜態連結串列實現(A-B)U(B-A)

時間複雜度O(3n)不是很難,直接貼程式碼:StaticLinkList.h#ifndef _STATIC_LINK_LIST_H_ #define _STATIC_LINK_LIST_H_ #define MAXSIZE 100 typedef enum {ERROR,OK

連結串列實現(Java版)

/** /** * 用單鏈表實現棧 * * 表示連結串列的一個節點 * @author ly * */ public class Node { Object element; Node next; public Node(Object element){ this(elemen

Java資料結構之——連結串列實現

class Node<E>{ E data; Node<E> next = null; public Node(E data){ this.data = data; } } public class ListStack<

資料結構】雙向連結串列實現

文章目錄 LinkList.h LinkLish.c LinkList.h #ifndef __LINKLIST_H__ #define __LINKLIST_H__ #include <stdio.h>

資料結構實驗之連結串列連結串列的逆置(SDUT 2118)

題目連結 #include <bits/stdc++.h> using namespace std; struct node { int data; struct no

演算法——資料結構(單向連結串列實現

單向連結串列也叫單鏈表,是連結串列中最簡單的一種形式,它的每個節點包含兩個域,一個資訊域(元素域)和一個連結域。這個連結指向連結串列中的下一個節點,而最後一個節點的連結域則指向一個空值。 表元素域el

Java版資料結構之迴圈連結串列實現

簡介 在指定結點後新增一個結點 刪除指定結點的下一個結點 獲取下一個結點 獲取結點資料 public class LoopNode { int data;//資料域 LoopNode next;//下一個結點 public Loop

【php實現資料結構】單向連結串列

什麼是單向連結串列 連結串列是以鏈式儲存資料的結構,其不需要連續的儲存空間,連結串列中的資料以節點來表示,每個節點由元素(儲存資料)和指標(指向後繼節點)組成。 單向連結串列(也叫單鏈表)是連結串列中最簡單的一種形式,每個節點只包含一個元素和一個指標。它有一個表頭,並且除了最後一個節點外,所有節點都有其後

陣列和連結串列實現

完成一個棧總共需要完成以下操作:初始化入棧出棧檢視棧頂元素檢視棧的容量清空棧。首先是簡單的,用陣列做的,會有越界的可能。#include <stdio.h> #include <stdlib.h> typedef struct Stack {