1. 程式人生 > >JAVA順序棧操作——初始化、入棧、出棧、判斷空棧、判斷棧滿

JAVA順序棧操作——初始化、入棧、出棧、判斷空棧、判斷棧滿

順序棧:使用一組連續的記憶體依次儲存棧中的資料,定義一個top變數來儲存棧頂序號。

棧結構是“後進先出”的原則。

棧的最基本操作有兩個:push(入棧) + pop(出棧)

import java.util.Scanner;

/** 
*  @author   LilyLee
 * @date     2017年4月25日
 * @time     下午4:25:15
 * @Version  1.0
 * @email    [email protected]
 *
 */
public class Mystack {

	public static void main(String[] args) {
		Stack_type st=new Stack_type();
		Stack_Data data1=new Stack_Data();
		Stack_type stack =st.STinit(); //初始化棧
		Scanner sc=new Scanner(System.in);
		System.out.println("input  name age end with name='0'"); //輸入棧元素,以0結束
		while(true){
			Stack_Data sdata=new Stack_Data();
			sdata.name=sc.next();
			if(sdata.name.equals("0")){break;}
			sdata.age=sc.nextInt();
			st.PushST(stack, sdata);
		}
		String flag="1";
		System.out.println("pop stack  end with 0");//輸入任意非0元素完成彈棧
		flag=sc.next();
		while(!(flag.equals("0"))){
			data1=st.PopST(stack);
			if(data1==null){break;}
			System.out.println(data1.name+" "+data1.age);
			flag=sc.next();
		}
		System.out.println("End and Free");
		st.STFree(st);
		
	}
}

class Stack_Data{
	String name;
	int age;
}

class Stack_type{
	static final int MAXLEN=50; //定義棧的最大長度
	Stack_Data[] data=new Stack_Data[MAXLEN+1];
	int top;
	
	Stack_type STinit(){
		Stack_type p;
		
		if((p=new Stack_type())!=null){  //申請棧記憶體
			p.top=0;
			return p;
			}
		return null;
		
	}
	
	boolean STIsEmpty(Stack_type s){  //判斷棧是否為空
		boolean t;
		t=(s.top==0);
		return t;
	}
	
	boolean STIsFull(Stack_type s){  //判斷棧是否已滿
		boolean t;
		t=(s.top==MAXLEN);
		return t;
	}
	
	void STClear(Stack_type s){  //清空棧
		s.top=0;
	}
	
	void STFree(Stack_type s){ //釋放棧所佔用空間
		if(s!=null){
			s=null;
		}
	}
	
	int PushST(Stack_type s,Stack_Data data){
		if((s.top+1)>MAXLEN){return 0;}  //棧溢位
		s.data[++s.top]=data;
		return 1;
	}
	
	Stack_Data PopST(Stack_type s){
		if(s.top==0){System.out.println("no elements!"); return null;} //棧為空,操作失敗
		return (s.data[s.top--]);
	}
	
	Stack_Data PeekST(Stack_type s){
		if(s.top==0){System.exit(0);}  //棧為空,操作失敗
		return (s.data[s.top]);
	}
	
	
}


相關推薦

JAVA順序操作——初始判斷判斷滿

順序棧:使用一組連續的記憶體依次儲存棧中的資料,定義一個top變數來儲存棧頂序號。 棧結構是“後進先出”的原則。 棧的最基本操作有兩個:push(入棧) + pop(出棧) import java.util.Scanner; /** * @author Lily

採用順序儲存實現初始操作。/驗證實驗/

#include<stdio.h>  #include<stdlib.h>  #define maxsize 100  typedef struct SqStack{      int data[maxsize];      int top;  }Sq

順序的基本操作 初始 頂元素

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

(六)迴圈順序佇列的初始佇列佇列

初學資料結構最好的辦法可能是先讀程傑寫的《大話資料結構》,以下摘自豆瓣圖書簡介:《大話資料結構》以一個計算機教師教學為場景,講解資料結構和相關演算法的知識。通篇以一種趣味方式來敘述,大量引用了各種各樣的生活知識來類比,並充分運用圖形語言來體現抽象內容,對資料結構所涉及到的一

c++ 實現順序類(初始,退。讀頂元素以及順序輸出頂指標與中的元素

/* 定義順序棧類(初始化,入棧,退棧。讀棧頂元素以及順序輸出棧頂指標與棧中的元素 */ #include<iostream> using namespace std; // template <class T> class sq_Stack {

C語言實現順序佇列的初始入隊隊等操作(三)

佇列是一種只能在隊頭刪除、隊尾插入的線性表,本文實現佇列的順序結構,使用一個結構體包含隊頭指標、隊尾指標、佇列的長度這三個成員。通過malloc函式為佇列開闢一片記憶體,大小為100個單位(100*資料型別所佔位元組),將隊頭指標指向起始地址,隊尾指標也指向起始地址。佇列的

的常用操作初始

#include #include typedef struct Node {     int data;     struct Node *pNext; }NODE, *PNODE; typedef struct Stack {     PNODE pTop;     PNODE pBottom;

順序初始,進求長訪頂遍歷銷燬

     順序棧即棧的順序儲存結構,它利用一組地址連續的儲存單元存放自棧底到棧頂的元素,是一種後進先出(last in first out,LIFO)的線性表。      判斷棧不存在的條件為:S.base=NULL;      空棧:S.base=S.top;     

Java基礎知識之初始——初始順序

子類 初始 zab 不清楚 static urn extend rgs end 概述 在Java中所有的變量在使用前都需要初始化。如果我們不初始化,則編譯器會為變量初始化一個默認值(例如,int類型的變量的初始化默認值是0)。但是初始化的順序是什麽樣的,很多人搞不清楚(我

java類中的初始順序

log 初始化 靜態變量 clas bsp 類成員變量 art 類成員 學習 1)父類靜態資源加載:靜態變量、靜態方法、靜態初始化塊   按靜態資源的定義順序來加載 2)子類靜態資源加載:同上 3)父類成員變量、成員方法、初始化塊 4)父類構造器 5)子類成員變量、成員方法

java中類的初始操作

java中一個類如果想要初始化,是如何進行的呢?砍了程式設計思想,也結合了網上其他人的文章,最終有了一個新的認識。 一、初始化順序     Java中類初始化順序:(靜態變數、靜態初始化塊)>(變數、初始化塊)>構造器。 其中小括號內部之間的呼叫順序是

JAVA 構造 MAP 並初始 MAP定義時就初始

第一種方法:static塊初始化 public class Demo{     private static final Map<String, String> myMap;     static     {         myMap = new HashMa

C語言實現順序初始&進&&讀取頂元素

/*順序表實現棧的一系列操作*/ #include<stdio.h> #include<stdlib.h> #define Stack_Size 50 //設棧中元素個數為50 #define OK 1 #define ERROR 0

順序表的初始插入刪除

昨天晚上做了中移動蘇州軟體公司的暑期實習崗的筆試題,感覺備受打擊,尤其是自以為是的資料結構題(從快排、歸併排序、堆排序中選一種實現),碎決定再次學習資料結構一次,並將重要的資料結構用程式實現。 這裡先實現的是順序表的初始化,插入和刪除操作。 #include<iostream&g

帶頭結點的迴圈連結串列表示佇列的初始佇列和佇列的演算法

假設以帶頭結點的迴圈連結串列表示佇列,並且只設一個指標指向隊尾元素結點(注意不設頭指標),試編寫相應的佇列初始化、入佇列和出佇列的演算法。 帶頭結點迴圈鏈佇列CLQueue的型別為以下LinkList型別:typede

java中class的初始順序

含有繼承的類的初始化順序:父類的靜態變數->父類的靜態塊->子類靜態變數->子類靜態初始化塊->父類變數->父類初始化塊->父類的建構函式->子類的變數->子類初始化塊->子類建構函式;(變數和初始化塊之間的先後順序根據類

Java繼承機制的初始順序+靜態動態繫結

 一個Java程式的執行要經過編譯和執行(解釋)這兩個步驟,同時Java又是面向物件的程式語言。當子類和父類存在同一個方法,子類重寫了父類的方法,程式在執行時呼叫方法是呼叫父類的方法還是子類的重寫方法呢,這應該是我們在初學Java時遇到的問題。這裡首先我們將確定這種呼叫何種

資料結構 線性連結串列的創立及其基本操作初始遍歷銷燬求表長刪除插入等

最近寫了個數據結構的單鏈表,其中包括十來個基本操作演算法,包括了建立單鏈表、刪除、插入、定位、遍歷等基本的操作。在VS上運行了一下,可以通過,感覺還不錯,和大家分享一下! 我是建立了一個C++專案,在專案下寫的,你們也可以建立專案把下面的東西複製到編譯器上試試! 第一部分是

Java虛擬機 - 類初始

結果 信息 nbsp 程序代碼 也有 編譯期 說明 加載 指令 【深入Java虛擬機】之三:類初始化 類初始化是類加載過程的最後一個階段,到初始化階段,才真正開始執行類中的Java程序代碼。虛擬機規範嚴格規定了有且只有四種情況必須立即對類進行初始化: 遇到new、

java基礎——類的初始

rmq ocs cin tp5 hmm wax fpm inf roo p滓D猩2賞40徽踴http://www.docin.com/app/user/userinfo?userid=178501575 薊逝猩鎂4韭v黴叭6http://huiyi.docin.com