/**
* @author xiaoma
*实现链表的增删查
*/
public class MyLinkList {
public Node head;
public Node current;
class Node {
//为了方便,就不用get、set方法了。
//存放数据
public int data;
//存放下一个节点
public Node next;
public Node(int data){
this.data = data;
}
}
//===========================================================================
//在表尾插入
public void insert(int data){
if(head == null){
head = new Node(data);
current = head;
}
else{
current.next = new Node(data);
current = current.next;
}
}
//在第index项插入数据
public void insertNodeByIndex(int index,int data){
Node newNode = new Node(data);
MyLinkList my = new MyLinkList();
int length = my.getLength(head);
if(index<1||index>length+1){
System.out.println("超出链表范围。");
return;
}
else if(index == 1){
newNode.next = head;
head = newNode;
}
else{
Node temp = head;
int count = 1;
while(index-1 != count && temp.next != null){
temp = temp.next;
count++;
}
newNode.next = temp.next;
temp.next = newNode;
}
}
//=========================================================================
//删除第index个节点
public void deleteNthNode(int index){
MyLinkList my = new MyLinkList();
int length = my.getLength(head);
if(index<1||index>length+1){
System.out.println("无此节点。");
return;
}
else if(index == 1){
head = head.next;
}
else{
int count = 1;
Node temp = head;
while(index-1 != count++){
temp = temp.next;
}
temp.next = temp.next.next;
}
}
//========================================================================
//遍历链表
public void print(Node node){
if(node == null){
return;
}
Node temp =node;
while(temp != null){
System.out.print(temp.data+",");
temp = temp.next;
}
}
//获得第index项值
public int getNthNode(int index){
MyLinkList my = new MyLinkList();
int length = my.getLength(head);
if(index<1||index>length+1){
System.out.println("不存在。");
return -1;
}
int count = 1;
Node temp =head;
while(index != count++){
temp = temp.next;
}
return temp.data;
}
//=========================================================================
//获取链表长度
public int getLength(Node node){
int length = 0;
current = node;
while(current != null){
length++;
current = current.next;
}
return length;
}
//=========================================================================
public static void main(String[] args) {
MyLinkList my = new MyLinkList();
for(int i = 0; i < 10; i++) {
my.insert(i);
}
my.print(my.head);
my.insertNodeByIndex(11, 3);
System.out.println();
my.print(my.head);
System.out.println();
System.out.println(my.getNthNode(11));
my.deleteNthNode(11);
my.print(my.head);
int length = my.getLength(my.head);
System.out.println("length="+length);
}
}
java实现简单链表(int类型)增删查
最新推荐文章于 2023-05-23 16:23:30 发布