[問題] 把兩個linkedlist合併成一個
就是建立兩個linked-list 然後可以讓人用鍵盤輸入數字
比如說第一個linked-list輸入 1 4 7三個數字
第二個linked-list輸入 2 5 6三個數字
接著螢幕上會顯示出合併後的數字1 2 4 5 6 7
並且把最大的數值7也顯示出來
(底下是我寫的code 如果有改進的地方也請大家跟我說 謝謝)
=======linkedlist部分=======
class Node
{
int data; //節點資料
Node next; //下一個節點
//建構子
public Node(int data)
{
this.data = data;
this.next = null;
}
}
//串列類別
public class LinkedList
{
private Node first;
private Node last;
//檢查串列是否是空的
public boolean isEmpty()
{
return first == null;
}
//在串列插入節點
public void insert(int data, boolean isFront)
{
//建立節點
Node newNode = new Node(data);
//插入節點在開頭
if(this.isEmpty())
{
//第一個節點
first = newNode;
last = newNode;
}
else
{
if(isFront)
{
newNode.next = first;
first = newNode;
}
else
{
//新增在節尾
last.next = newNode;
last = newNode;
}
}
}
//找尋節點資料
public boolean find(int data)
{
boolean isFound = false;
Node current = first;
while(current != null)
{
if(data == current.data)
isFound = true;
current = current.next; //下一個節點
}
return isFound;
}
//從前面取得節點的資料
public int fetch(boolean isFront)
{
int data = -1;
if(!this.isEmpty())
{
if(first == last)
{
//只有一個節點
data = first.data;
first = null;
last = null;
}
else
{
if(isFront)
{
//從開頭取出
data = first.data;
first = first.next;
}
else
{
Node current = first;
Node temp = last;
//找到最後節點的前一個節點
while(current.next != last)
current = current.next;
last = current;
current.next = null;
data = temp.data;
}
}
}
return data;
}
//串列走訪列印所有節點
public void print()
{
if(this.isEmpty())
{
System.out.println("串列是空的");
return;
}
Node current = first;
while(current != null)
{
System.out.print("[" + current.data +"]");
current = current.next; //下一個節點
}
System.out.println();
}
}
=========test部分========
import java.io.*;
public class test1013
{
//主程式
public static void main(String[] args) throws Exception
{
//建立串列物件
LinkedList list = new LinkedList();
LinkedList list1 = new LinkedList();
//插入節點第一個linkedlist
System.out.println("請輸入第一個linkedlist的數字三個:");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str1 = br.readLine();
String str2 = br.readLine();
String str3 = br.readLine();
int num1 = Integer.parseInt(str1);
int num2 = Integer.parseInt(str2);
int num3 = Integer.parseInt(str3);
list.insert(num1, false);
list.insert(num2, false);
list.insert(num3, false);
System.out.print("第一個linkedlist原始串列:");
list.print();
//插入節點第二個linkedlist
System.out.println("請輸入第二個linkedlist的數字三個:");
BufferedReader br1 = new BufferedReader(new InputStreamReader(System.in));
String str4 = br1.readLine();
String str5 = br1.readLine();
String str6 = br1.readLine();
int num4 = Integer.parseInt(str4);
int num5 = Integer.parseInt(str5);
int num6 = Integer.parseInt(str6);
list1.insert(num4, false);
list1.insert(num5, false);
list1.insert(num6, false);
System.out.print("第二個linkedlist原始串列:");
list1.print();
(我想問一下 寫到這裡我應該怎麼把兩個linkedlist合併成一個
由小到大的串列呢?)
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.139.56.169
※ 編輯: helenus 來自: 220.139.56.169 (05/07 12:02)
討論串 (同標題文章)
java 近期熱門文章
PTT數位生活區 即時熱門文章