链表的基本操作 java_详细实现单链表的基本操作【Java版】
節(jié)點(diǎn)類
static Node head=new Node();
static class Node{
int data;
Node next;
public Node() {//無參構(gòu)造方法,默認(rèn)data為0
}
public Node(int data) {//帶data構(gòu)造方法
this.data=data;
}
}
添加節(jié)點(diǎn)
/*
* 添加節(jié)點(diǎn),尾插法
*/
public void addNode(int data) {
Node node = new Node(data);//創(chuàng)建新節(jié)點(diǎn)對象
Node temp = head;
while(temp.next != null) {//找到當(dāng)前鏈表尾結(jié)點(diǎn)
temp=temp.next;
}
temp.next=node;
}
遍歷節(jié)點(diǎn)
/*
* 遍歷鏈表
*/
public void printNode() {
Node temp = head.next;
while(temp!=null) {
System.out.print(temp.data+" ");
temp=temp.next;
}
System.out.println();
}
統(tǒng)計(jì)鏈表長度
/*
* 統(tǒng)計(jì)鏈表長度
*/
public static int length() {
int length=0;
Node temp = head;//head為頭指針,不算作鏈表節(jié)點(diǎn)
while(temp.next!=null) {
length++;
temp=temp.next;
}
return length;
}
插入節(jié)點(diǎn)
/*
* 通過索引插入節(jié)點(diǎn)
*/
public void insertNode(int index,int data) {
int size = length()+1;//+1是因?yàn)槲膊坎迦氲乃饕凳钱?dāng)前鏈表尾結(jié)點(diǎn)后一個哦,不是尾結(jié)點(diǎn)的索引
if(index==size) { //在鏈表尾部插入則直接調(diào)用addNode方法
addNode(data);
return;
}
if(index<1||index>size) {
System.out.println("不正確的位置索引");
return;
}
Node temp=head;
Node node = new Node(data);
int length=1;
while(temp.next!=null) {
if(index==length++) {//先判斷是否相等,然后length++
node.next=temp.next;
temp.next=node;
return;
}
temp=temp.next;
}
}
刪除尾結(jié)點(diǎn)
/*
* 刪除尾結(jié)點(diǎn)
*/
public void popNode() {
Node temp = head;
Node pre = temp;
while(temp.next!=null) {
pre=temp;
temp=temp.next;
}
pre.next=null;//鏈表尾結(jié)點(diǎn)的next始終指向NULL
}
通過索引刪除節(jié)點(diǎn)
/*
* 通過索引刪除節(jié)點(diǎn)
*/
public void deleteNode(int index) {
if(index==length()) { //如果索引位置是尾結(jié)點(diǎn)位置,調(diào)用popNode方法
popNode();
return;
}
if(index<1||index>length()) {
System.out.println("刪除節(jié)點(diǎn)位置索引不合法");
return;
}
Node temp=head;
int length=1;
while(temp.next!=null) {
if(index==length++) {
System.out.println(temp.data);
//刪除只需要把要刪除節(jié)點(diǎn)的上一個節(jié)點(diǎn)的next指向刪除節(jié)點(diǎn)的下一個節(jié)點(diǎn)
temp.next=temp.next.next;
return;
}
temp=temp.next;
}
}
關(guān)于單鏈表的基本操作就寫到這里了,當(dāng)然關(guān)于鏈表的其他的一些操作我可能會出后續(xù)。。再會。。。
總結(jié)
以上是生活随笔為你收集整理的链表的基本操作 java_详细实现单链表的基本操作【Java版】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果7pa1661是什么版本
- 下一篇: java visualvm分析_使用Vi