Java 头结点型和头指针型单链表

带头结点的单链表List

import java.util.Scanner;
class List{
	int data;
	List next;
	List(int x){ data = x;}
	void append() {
		List tail,p;
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一组数,以-1结尾:");
		int x = sc.nextInt();
		tail = this; //tail = head; this代表对象自己,就是头结点
		while(x != -1) {
			p = new List(x);
			tail.next = p;
			tail = p;
			x = sc.nextInt();
		}
	}
	void print() {
		for(List p=this.next; p!=null; p=p.next)
			System.out.print(p.data+" ");
	}
}
class App{
	public static void main(String [] args) {
		List h = new List(0);
		h.append();
		h.print();
	}
}

头指针型的单链表List1

import java.util.Scanner;
class List1{
	int data;
	List1 next;
	List1(int x){ data = x;}
	List1 append() { //区别带头结点型
		List1 tail,p;
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一组数,以-1结尾:");
		int x = sc.nextInt();     //区别带头结点型
		if(x == -1) return null;  //
		this.data = x;            //
		
		x = sc.nextInt();
		tail = this;
		while(x != -1) {
			p = new List1(x);
			tail.next = p;
			tail = p;
			x = sc.nextInt();
		}
		return this;
	}
	void print() {
		for(List1 p=this; p!=null; p=p.next) //区别
			System.out.print(p.data+" ");
	}
}
class App{
	public static void main(String [] args) {
		List1 h = new List1(0);
		h = h.append(); //
		if(h == null)   //先判断,若直接h.print(),h为空时会报错
			System.out.print("为空!");
		else
			h.print();
	}
}

在这里插入图片描述
//本例掌握:

  1. this不得不用的场合,tail=this;即单链表中,表达【表头】自己
  2. 构造函数的作用:不是构造,而是初始化(构造,即分配空间,由new实现,空间大小由构造函数名决定)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值