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