自建單向鍊錶,自建鏈棧,反向輸出單向鍊錶

2021-10-02 10:08:34 字數 3299 閱讀 1204

題目:反向輸出單向鍊錶

解題思路:反向輸出單向鍊錶方法有很多,但筆者採用自建單向鍊錶,自建鏈棧,將單向鍊錶中元素輸入棧中,再取出棧中元素,輸入到新單向鍊錶中

**見下:

//自定義鍊錶/鏈棧節點類

public

class

node

//自建單向鍊錶

public

class

linklist

/*** 插入節點

* @param element :節點元素值

*/public

void

insertlinklist

(t element)

node node =

newnode()

;//生成節點

node.data = element;

if(head.next == null)

else

temp.next = node;

node.next = null;}}

/** * 值刪除

** @param element : 要刪除的值

* @return :刪除則為true 否則為假

*/public

boolean

deletelinklist

(t element)

while

(temp.next != null)

else

}return

false;}

/** * 列印

*/public

void

printlinklist()

system.out.

println()

;}/** * 求長度

** @return : 返回的長度

*/public

intsizelinklist()

return size;

}/**

* 下標刪除

** @param i : 要刪除的值下標

* @return :刪除則為true 否則為假

*/public

boolean

deleteindexlinklist

(int i)

if(i <

0|| i >=

sizelinklist()

)while

(temp.next != null)

temp = temp.next;

}return

false;}

/** * 給定值求下標

** @param element :要找的元素

* 返回值 index 如果為-1 則沒有找到

*/public

intgetindexbydata

(t element)

while

(temp.next != null)

} system.out.

println

("要查詢的值不存在!");

return index;

}/**

* 給定下標求值

* @param index

*/public object getdatabyindex

(int index)

if(index >=

sizelinklist()

|| index <0)

while

(temp.next !=null)

size++;}

return null;

}}

//自建鏈棧

public

class

linkstack

/*** 入棧,插入節點

* @param element :節點元素值

*/public

void

pushlinkstack

(t element)

node node =

newnode()

;//生成節點

node.data = element;

if(top == null)

else

}/**

* 出棧,刪除棧頂元素

** @param element : 要刪除的值

* @return :刪除則為true 否則為假

*/public object poplinkstack()

else

}/**

* 列印

*/public

void

printlinkstack()

system.out.

println()

;}/** * 求鏈棧長度

** @return : 返回的長度

*/public

intsizelinkstack()

return size;

}}

//反向輸出鍊錶

public

class

antitonelinklist

//生成乙個棧

linkstack

linkstack=

newlinkstack()

;//棧初始化

linkstack.

initlinkstack()

;//給棧賦值

for(

int j=

0;j<

5;j++

)//列印原鍊錶

linklist.

printlinklist()

;//列印棧

linkstack.

printlinkstack()

;//生成乙個新的單向鍊錶

linklist

linklistnew=

newlinklist()

;//初始化

linklistnew.

initlinklist()

;//給新鍊錶賦值

int sizestack=linkstack.

sizelinkstack()

;for

(int k=

0;k)//列印新鍊錶

system.out.

println

("*****輸出反向鍊錶*****");

linklistnew.

printlinklist()

;}}

單向鍊錶實現棧

首先我們要知道 棧 為何物 他是一種儲存資料的方法 有點類似子彈夾 擁有先進後出的特點 同時進棧與出棧都只能在一端進行.public inte ce mystack public class node public object getdate public void setdate object ...

鍊錶 單向鍊錶

討論單鏈表之前,我們先來討論下面這個問題。順序表存在的一些問題 中間 頭部的插入刪除,時間複雜度為o n 增容需要申請新空間,拷貝資料,釋放舊空間。會有不小的消耗。增容一般是呈2倍的增長,勢必會有一定的空間浪費。例如當前容量為100,滿了以後增容到200,我們再繼續插入了5個資料,後面沒有資料插入了...

鍊錶 反轉單向鍊錶

思路 從第二個元素開始。1 刪除當前元素。2 把當前元素放到頭結點位置。其中需要宣告3個變數 headnode 頭結點 prenode 前乙個結點 currentnode 當前結點 具體步驟如圖所示 實現 反轉單鏈表方法實現類 created by liujinjin on 17 1 19.publ...