(学习java)没有头结点的单链表

//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;
		}	
		
	}		
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值