📄 test2.java
字号:
package src;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Test2 {
//双向链表
private Node doubleDirList=null;
/**
* 构造双向链表
* @throws IOException
*
*/
private void createDoubleDirList() throws IOException
{
//输入
String numbers="";
System.out.println("0-9的随机系列,用\",\"格开:");
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
numbers=br.readLine();
br.close();
//解析输入
StringTokenizer tokenizer=new StringTokenizer(numbers,",");
doubleDirList=new Node();
doubleDirList.setData(new Integer(tokenizer.nextToken()).intValue());
Node current=doubleDirList;
while(tokenizer.hasMoreTokens())
{
Node newNode=new Node();
newNode.setData(new Integer(tokenizer.nextToken()).intValue());
newNode.setPrev(current);
current.setNext(newNode);
current=newNode;
}
}
/**
* 正向输出
*
*/
private void printFromFirstToLast()
{
String result="";
System.out.println("正向输出:");
Node current=doubleDirList;
while(current!=null)
{
result+=current.getData()+" ";
current=current.getNext();
}
System.out.println(result);
}
/**
* 反向输出
*
*/
private void printFromLastToFirst()
{
String result="";
System.out.println("反向输出:");
Node current=doubleDirList;
while(current!=null&¤t.getNext()!=null)
{
current=current.getNext();
}
while(current!=null)
{
result+=current.getData()+" ";
current=current.getPrev();
}
System.out.println(result);
}
/**
* 降序输出
*
*/
private void printFromLargeToSmall()
{
downSort();
String result="";
System.out.println("降序输出:");
Node current=doubleDirList;
while(current!=null)
{
result+=current.getData()+" ";
current=current.getNext();
}
System.out.println(result);
}
/**
* 找到双向链表中的最大节点
* @param doubleList
* @return
*/
private Node getLargestNode(Node doubleList)
{
Node largestNode=doubleList;
Node current=doubleList.getNext();
while(current!=null)
{
if(current.getData()>largestNode.getData())
{
largestNode=current;
}
current=current.getNext();
}
return largestNode;
}
/**
* 将双向链表按降序调整
*
*/
private void downSort()
{
Node current=doubleDirList;
while(current!=null)
{
Node largestNode=getLargestNode(current);
if(largestNode.getData()!=current.getData())
{
swop(largestNode,current);
}
current=current.getNext();
}
}
/**
* 将双向链表中的两节点互换位置
* @param node1
* @param node2
*/
private void swop(Node node1,Node node2)
{
int tempData=node1.getData();
node1.setData(node2.getData());
node2.setData(tempData);
}
/**
* @param args
*/
public static void main(String[] args)
{
Test2 test2=new Test2();
try
{
test2.createDoubleDirList();
}
catch (IOException e)
{
System.out.println("输入输出异常");
}
test2.printFromFirstToLast();
test2.printFromLastToFirst();
test2.printFromLargeToSmall();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -