//10-12 数据结构中没有头结点的单链表,用java语言简单实现
public class LineListNode {
public static void main(String[] args) {
LinkedList L = new LinkedList();
L.CreateNode();
L.addNodeF(1);
L.addNodeF(2);
L.addNodeH(5);
L.ListInsert(2, 3);
L.ListDelete(3);
L.ListClear();
L.addNodeF(1);
//L.ListInsert(4, 5);
//L.ListDelete(2);
L.ListNode(L);
}
//链表的结构代码
public static class Node{
//数据域
public int data;
//指针域
public Node next;
//构造函数
public Node(){
}
public Node(int data){
this.data = data;
this.next = null;
}
}
public static class LinkedList{
//头结点
public Node head;
//链表大小
public int size;
//创建链表
public void CreateNode(){
head = null;
}
//添加节点 头插法
public void addNodeH(int n){
Node node = new Node();
node.data = n;
if(head == null){
head = node;
size ++;
}else{
node.next = head;
head = node;
size ++;
}
}
//添加结点 尾插法
public void addNodeF(int n){
Node node = new Node();
node.data = n;
if(head == null){
head = node;
size ++;
}else{
Node temp = head;
while(temp.next != null){
temp = temp.next;
}
temp.next = node;
size ++;
}
node.next = null;
}
//链表结点插入(不能在空链表插入)
public int ListInsert(int i, int n){
Node temp = head;
int j = 1;
while(temp != null && j<i-1){
temp = temp.next;
j++;
}
if(temp == null && j>i-1){
System.out.println("i值输入错误");
return 0;
}
Node node = new Node();
node.data = n;
node.next = temp.next;
temp.next = node;
size ++;
return 1;
}
//单链表结点的删除
public int ListDelete(int i){
Node temp = head;
int j = 1;
while(temp != null && j<i-1){
temp = temp.next;
j++;
}
if(temp == null && j>i-1){
System.out.println("i值输入错误");
return 0;
}
int n = temp.next.data;
temp.next = temp.next.next;
size --;
return n;
}
//单链表结点的遍历
public void ListNode(LinkedList L){
Node node = new Node();
node = L.head;
if(node == null){
System.out.println("空链表");
}
while(node != null){
if(node.next == null){
System.out.println(node.data);
break;
}
System.out.print(node.data + "->");
node = node.next;
}
}
//单链表的清空
public void ListClear(){
Node current = head;
while(head != null){
if(current.next != null){
head = current.next;
current = null;
current = head;
size--;
}else{
head = null;
size--;
}
}
}
//显示单链表的长度
public int ListLength(){
System.out.println("单链表长度: " + size);
return size;
}
}
}