亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Java數據結構之鏈表、棧、隊列、樹的實現方法示例

2024-07-14 08:43:46
字體:
來源:轉載
供稿:網友

本文實例講述了Java數據結構之鏈表、棧、隊列、樹的實現方法。分享給大家供大家參考,具體如下:

最近無意中翻到一本書,閑來無事寫幾行代碼,實現幾種常用的數據結構,以備后查。

一、線性表(鏈表)

1、節點定義

/**鏈表節點定義 * @author colonel * */class Node { public int data; Node next=null; public Node(int data){ this.data=data; }}

2、鏈表操作類

/**鏈表操作類 * @author colonel * */public class operateClass { public Node headNode=null; /*給鏈表添加界節點 * @param data 鏈表節點數據 */ public Node addNode(int data){ Node newNode=new Node(data); if (headNode==null) {  headNode=newNode;  newNode.next=null;  return headNode; } Node tempNode=headNode; while (tempNode.next!=null) {  //tempNode=headNode;  tempNode=tempNode.next; } tempNode.next=newNode; return headNode; } /**刪除節點 * @param 刪除節點的位置 * */ public boolean delNode(int index){ if (index<1||index>length()) {  return false; } if (index==1) {  headNode=headNode.next;  return true; } Node preNode=headNode; Node curNode=preNode.next; int count=2; while (curNode!=null) {  if (count==index) {  preNode.next=curNode.next;  return true;  }  preNode=curNode;  curNode=curNode.next;  count++; } return true; } /**取鏈表的長度 * @return返回鏈表的長度 */ public int length(){ int length=0; Node temp=headNode; while (temp!=null) {  length++;  temp=temp.next; } return length; } /**按照值域對鏈表數據排序 * @return 返回排序后的鏈表頭節點 */ public Node orderList(){ Node nextNode=null; int temp=0; Node curNode=headNode; while (curNode.next!=null) {  nextNode=curNode.next;  while (nextNode!=null) {  if (curNode.data>nextNode.data) {  temp=curNode.data;  curNode.data=nextNode.data;  nextNode.data=temp;  }  nextNode=nextNode.next;  }  curNode=curNode.next; }  return headNode; } /** * 去除鏈表中值域重復的元素 */ public void redRepeat(){ if (length()<=1) {  return; } Node curNode=headNode; while (curNode!=null) {  Node insidNode=curNode.next;  Node insidPreNode=insidNode;  while (insidNode!=null) {  if (insidNode.data==curNode.data) {   insidPreNode.next=insidNode.next;   //return;  }  insidPreNode=insidNode;  insidNode=insidNode.next;  }  curNode=curNode.next; } } /**倒序輸出鏈表中所有的數據 * @param hNode 鏈表頭節點 */ public void reversePrint(Node hNode){ if (hNode!=null) {  reversePrint(hNode.next);  System.out.println(hNode.data); } } /** * 從頭節點開始到為節點結尾打印出值 */ public void printList(){ Node tmpNode=headNode; while (tmpNode!=null) {  System.out.println(tmpNode.data);  tmpNode=tmpNode.next; } }}

二、棧

1、該棧使用數組實現,具體的棧操作類

class MyStack<E>{ private Object[] stack; int top=-1; public MyStack(){ stack=new Object[10]; } public boolean isEmpty(){ return top==0; } /**彈出棧頂元素(不刪除) * @return */ public E peek(){ if (isEmpty()) {  return null; } return (E) stack[top]; } /**出棧站頂元素 * @return 棧頂元素 */ public E pop(){ E e=peek(); stack[top]=null; top--; return e; } /**壓棧 * @param item 待壓元素 * @return 返回待壓元素 */ public E push(E item){ //ensureCapacity(top+1); stack[++top]=item; return item; } /**棧滿擴容 * @param size */ public void ensureCapacity(int size){ int len=stack.length; if (size>len) {  int newLen=10;  stack=Arrays.copyOf(stack, newLen); } } /**返回棧頂元素 * @return */ public E getTop(){ if (top==-1) {  return null; } return (E) stack[top]; }}

三、隊列

該隊列使用鏈式實現

1、隊節點定義

/** * @author colonel *隊節點定義 * @param <Elem> */class queueNode<Elem>{ queueNode<Elem> nextNode=null; Elem data; public queueNode(Elem data){ this.data=data; }}

2、隊列操作類

/** * @author colonel *隊列操作類 * @param <Elem> */class MyQueue<Elem>{ private queueNode<Elem> headNode=null; private queueNode<Elem> tailNode=null; private queueNode<Elem> lastNode=null; /**判斷該隊列是否為空 * @return 返回true or false */ public boolean isEmpty(){ return headNode==tailNode; } /**入隊操作 * @param data 節點元素值 */ public void put(Elem data){ queueNode<Elem> newNode=new queueNode<Elem>(data); if (headNode==null&&tailNode==null) {  headNode=tailNode=newNode;  //tailNode=headNode.nextNode;  lastNode=tailNode.nextNode;  return; } tailNode.nextNode=newNode; tailNode=newNode; lastNode=tailNode.nextNode; //tailNode=tailNode.nextNode; } /**出隊操作 * @return 返回出隊元素 */ public Elem pop(){ if (headNode==lastNode) {  return null; } queueNode<Elem> tempNode=headNode; Elem statElem=tempNode.data; headNode=tempNode.nextNode; return statElem; } /**返回隊列長度 * @return 長度 */ public int size(){ if (isEmpty()) {  return 0; } int length=0; queueNode<Elem> temp=headNode; while (temp!=null) {  length++;  temp=temp.nextNode; } return length; }}

四、二叉樹

1、節點定義

/**樹節點定義 * @author colonel * */class TreeNode{ public int data; public TreeNode leftNode; public TreeNode rightNode; public TreeNode(int data){ this.data=data; this.leftNode=null; this.rightNode=null; }}

2、二叉樹操作類

/**二叉排序樹操作類 * @author colonel * */class OperateTree{ public TreeNode rootNode; public OperateTree(){ rootNode=null; } /**元素插入二叉排序樹 * @param data 待插節點數據 */ public void insert(int data){ TreeNode newNode=new TreeNode(data); if (rootNode==null) {  rootNode=newNode; }else {  TreeNode current=rootNode;  TreeNode parent;  while (true) {  parent=current;  if (data<current.data) {   current=current.leftNode;   if (current==null) {   parent.leftNode=newNode;   return;   }  } else {   current=current.rightNode;   if (current==null) {   parent.rightNode=newNode;   return;   }  }  } } } /**構建二叉排序樹 * @param item 元素數組 */ public void buildTree(int[] item){ for (int i = 0; i < item.length; i++) {  insert(item[i]); } } /** * 先序遍歷二叉樹 */ public void preOrder(TreeNode root){ if (root!=null) {  System.out.println(root.data);  preOrder(root.leftNode);  preOrder(root.rightNode); } } /**中序遍歷 * @param root */ public void inOrder(TreeNode root){ if (root!=null) {  inOrder(root.leftNode);  System.out.println(root.data);  inOrder(root.rightNode); } } /**后序遍歷 * @param root */ public void afterOrder(TreeNode root){ if (root!=null) {  afterOrder(root.leftNode);  afterOrder(root.rightNode);  System.out.println(root.data); } } /** * 層序遍歷二叉排序樹 */ public void layerTrave(){ if (this.rootNode==null) {  return; } Queue<TreeNode> myQueue=new LinkedList<>(); myQueue.add(rootNode); while (!myQueue.isEmpty()) {  TreeNode tempNode=myQueue.poll();  System.out.println(tempNode.data);  if (tempNode.leftNode!=null) {  myQueue.add(tempNode.leftNode);  }  if (tempNode.rightNode!=null) {  myQueue.add(tempNode.rightNode);  } } }

五、總結

更好的理解數據結構為何物,還需繼續探索,謹記。by:colonel


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产精品成人一区二区| 国产精欧美一区二区三区| 国产一区二区三区毛片| 91国自产精品中文字幕亚洲| 亚洲一区制服诱惑| 成人网欧美在线视频| 久久成人亚洲精品| 欧美成aaa人片免费看| 97在线视频国产| 91在线视频精品| 成人中文字幕+乱码+中文字幕| 国产精品美乳在线观看| 尤物九九久久国产精品的特点| 国内伊人久久久久久网站视频| 欧美亚洲免费电影| 欧洲成人免费aa| 亚洲自拍在线观看| 欧美色视频日本高清在线观看| 久久精品久久久久久| 国产精品九九久久久久久久| 久久久av网站| 日韩久久精品成人| 欧美色道久久88综合亚洲精品| 精品欧美国产一区二区三区| 成人情趣片在线观看免费| 亚洲天堂免费在线| 日韩av免费在线观看| 亚洲欧美日韩国产成人| 亚洲老头同性xxxxx| 亚洲免费视频一区二区| 乱亲女秽乱长久久久| 色青青草原桃花久久综合| 国产亚洲精品一区二555| 亚洲午夜久久久久久久| 欧美日韩另类视频| 国产成人精品电影久久久| 亚洲图片欧洲图片av| 69**夜色精品国产69乱| 亚洲福利视频久久| 自拍偷拍免费精品| 欧美在线视频免费观看| 亚洲精品久久久久中文字幕二区| www.亚洲男人天堂| 中文字幕日韩av| 成人免费淫片aa视频免费| 精品久久久久久亚洲国产300| 日本在线精品视频| 亚洲视频在线观看视频| 97精品一区二区视频在线观看| 最近2019中文免费高清视频观看www99| 欧美激情第1页| 中文字幕在线看视频国产欧美| 欧美激情奇米色| wwwwwwww亚洲| 91精品国产综合久久香蕉| 国产精品日韩专区| 国产综合在线看| 亚洲午夜国产成人av电影男同| 欧美大片在线影院| 中文字幕亚洲欧美日韩2019| 亚洲精品美女在线| xx视频.9999.com| 久久香蕉频线观| 欧美成人国产va精品日本一级| 欧美精品久久久久久久久| 国产日韩欧美夫妻视频在线观看| 亚洲一区久久久| 国产亚洲欧美另类中文| 7m第一福利500精品视频| 国产精品av在线播放| 亚洲欧美制服中文字幕| 在线观看国产欧美| 亚洲免费一级电影| 亚洲自拍欧美另类| 亚洲精品美女久久久| 日韩免费看的电影电视剧大全| 久久99热这里只有精品国产| 亚洲区在线播放| 国产精品成人免费电影| 92版电视剧仙鹤神针在线观看| 亚洲字幕在线观看| 中文字幕一区日韩电影| 国产一区二区三区在线免费观看| 欧美激情videoshd| 亚洲国产精品电影在线观看| 欧美激情一区二区三级高清视频| 久久久久亚洲精品| 久久偷看各类女兵18女厕嘘嘘| 国产精品看片资源| 538国产精品一区二区在线| 亚洲另类图片色| 精品国产精品三级精品av网址| 国产成人综合亚洲| 亚洲精品综合久久中文字幕| 国语自产精品视频在线看一大j8| 欧洲成人在线观看| 亚洲天堂av在线免费观看| 日韩视频精品在线| 中文字幕精品一区久久久久| 美女精品视频一区| 一区二区三区国产在线观看| 欧美成人精品在线视频| 亚洲精品在线不卡| 国产精品一区二区久久国产| 欧美日韩国产va另类| 久久久精品一区二区| 欧美成人在线免费视频| 青青青国产精品一区二区| 亚洲男人天堂2024| 国产日产久久高清欧美一区| 91免费的视频在线播放| 中文字幕欧美在线| 欧美在线欧美在线| 国产不卡一区二区在线播放| 国产精品一区电影| 国产在线精品自拍| 国产拍精品一二三| 92福利视频午夜1000合集在线观看| 亚洲天堂av女优| 免费不卡在线观看av| 亚洲一区二区三区毛片| 久久久精品久久久久| 日韩欧美精品在线观看| 国产精品揄拍500视频| 欧美在线一区二区视频| 国产精品丝袜高跟| 这里只有精品在线观看| 国产精品一区电影| 久久成年人视频| 亚洲午夜国产成人av电影男同| 国产丝袜精品第一页| 欧美自拍大量在线观看| 成人黄色片在线| www.美女亚洲精品| 午夜精品久久久久久久男人的天堂| 97在线精品视频| 成人免费视频网址| 日韩最新在线视频| 国产精品69精品一区二区三区| 久久久久北条麻妃免费看| 欧美电影院免费观看| 久久精品99久久香蕉国产色戒| 亚洲第一男人天堂| 久久久亚洲福利精品午夜| 668精品在线视频| 亚洲一区中文字幕| 亚洲97在线观看| 久久躁狠狠躁夜夜爽| 日韩有码在线视频| 久久久久久网址| 毛片精品免费在线观看| 久久夜精品va视频免费观看| 亚洲欧美日韩国产中文专区| 色综合久久中文字幕综合网小说| 九九热在线精品视频| 亚洲成人av片在线观看| 亚洲人精品午夜在线观看| 欧美性猛交xxxx偷拍洗澡| 亚洲欧美日韩中文在线制服| 亚洲第一黄色网| 亚洲男人av电影| 国产一区二区三区视频免费| 欧美日韩一区二区免费在线观看| 欧美日韩另类视频|