91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java數據結構中的循環鏈表和棧是什么

發布時間:2021-08-02 09:10:29 來源:億速云 閱讀:135 作者:chen 欄目:開發技術

這篇文章主要講解了“java數據結構中的循環鏈表和棧是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“java數據結構中的循環鏈表和棧是什么”吧!

目錄
  • 循環鏈表:

    • 實現思路:

    • 代碼實現:

  • 棧:

    • 實現思路:

    • 代碼實現:


循環鏈表:

與單鏈表的最后一個節點的指針域為null不同,循環鏈表的最后一個節點的指針指向頭結點

實現思路:

初始化時將頭結點指向自身,添加節點到鏈表末尾時,將新節點的指針指向頭結點

在遍歷鏈表時,判斷是否遍歷到鏈表末尾,需要判斷當前指針的下一個節點是否為頭結點

代碼實現:

節點類CircleNode:

public class CircleNode {
	public int data;
	public CircleNode next;
	public CircleNode(int data) {
		this.data = data;
	}
	@Override
	public String toString() {
		return "CircleNode{" + "data=" + data + '}';
	}
}

循環鏈表類CircleLinkedList:

public class CircleLinkedList {
	public CircleNode head = new CircleNode(0);
	public CircleLinkedList() {
		head.next = head;
	}
	//添加節點
	public void add(CircleNode circleNode) {
		CircleNode temp = head;
		//找到鏈表最后一個節點
		while (temp.next != head) {
			temp = temp.next;
		}
		temp.next = circleNode;
		circleNode.next = head;
	}
	//刪除節點
	public void delete(int data) {
		CircleNode temp = head;
		boolean flag = false;    //標志是否找到待刪除節點的前一個節點
		while (true) {
			if (temp.next == head) {
				//已經遍歷到鏈表最后了
				break;
			} else if (temp.next.data == data) {
				//找到待刪除節點的前一個節點
				flag = true;
				break;
			}
			temp = temp.next;
		}
		if (flag) {
			temp.next = temp.next.next;
		} else {
			System.out.println("要刪除的節點不存在");
		}
	}
	//輸出鏈表
	public void show() {
		//判斷鏈表是否為空
		if (head.next == head) {
			System.out.println("鏈表為空");
			return;
		}
		CircleNode temp = head.next;
		while (temp != head) {
			System.out.println(temp);
			temp = temp.next;
		}
	}
}

棧:

棧是一種受限制的線性表,只允許在表的一端進行插入,另一端進行刪除,具有“先入先出”的特性

棧是一種受限制的線性表

只允許在表的一端進行插入和刪除,這一端稱作棧頂

具有先進后出的特性

實現思路:

棧底層數據采用數組存儲

設置棧頂指針top指向棧頂的元素

判滿:top = maxSize - 1

判空:top = -1

入棧:棧頂指針上移后寫入數據

出棧:用臨時變量保存棧頂數據,棧頂指針下移,返回棧頂數據

代碼實現:

public class ArrayStack {
	private int maxSize;    //數組的最大容量
	private int[] stack;    //存放數據
	private int top = -1;    //棧頂指針
	public ArrayStack(int maxSize) {
		this.maxSize = maxSize;
		stack = new int[this.maxSize];
	}
	//判斷棧是否滿
	public boolean isFull() {
		return top == maxSize - 1;
	}
	//判斷棧是否空
	public boolean isEmpty() {
		return top == -1;
	}
	//入棧
	public void push(int value) {
		//判斷是否棧滿
		if (isFull()) {
			System.out.println("棧滿");
			return;
		}
		top++;
		stack[top] = value;
	}
	//出棧
	public int pop() {
		if (isEmpty()) {
			throw new RuntimeException("棧空");
		}
		int value = stack[top];
		top--;
		return value;
	}
	//輸出棧,從棧頂開始顯示
	public void show() {
		if (isEmpty()) {
			System.out.println("棧空");
			return;
		}
		for (int i = top; i >= 0; i--) {
			System.out.printf("stack[%d] = %d\n", i, stack[i]);
		}
	}
}

感謝各位的閱讀,以上就是“java數據結構中的循環鏈表和棧是什么”的內容了,經過本文的學習后,相信大家對java數據結構中的循環鏈表和棧是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

文登市| 普安县| 蓬莱市| 织金县| 文化| 通化县| 四子王旗| 博野县| 隆子县| 郁南县| 宁安市| 平谷区| 安顺市| 峨眉山市| 上饶县| 隆尧县| 乌拉特前旗| 陈巴尔虎旗| 聂拉木县| 揭阳市| 称多县| 乌兰察布市| 邛崃市| 太原市| 南丰县| 凯里市| 余庆县| 岳池县| 白玉县| 遵义市| 宜都市| 巩义市| 桓台县| 旅游| 库尔勒市| 凤庆县| 乌拉特前旗| 手游| 黔西| 大余县| 临夏市|