第六章总结

第六周总结

课堂总结

1.一个类,如果没有写构造方法,系统会自动形成一个无参构造方法,最好还是自己写一个无参构造,避免不必要的报错

2.在重载的构造方法中,可以直接用this指代其他的构造方法,可以直接调用。比如,无参构造方法中调用有参构造方法,但是一不小心就会报错,:call to this must be first statement in consructor,这里就是调用的注意点,在重载中调用其他的构造方法必须写在方法体第一句 。

3.实例代码只有构造方法被调用时执行,且先于构造方法执行(可用于检测和准备),相比于static代码块,范围小,仅存在于构造方法中

4.static 方法是类方法,不能调用this

课后总结

创建单链表

翻了几个博客,都是直接创建首尾节点,或者是直接单独用Node类来创建,那样太麻烦且适用范围小

按照作业要求,构造三个类,一个是链表类,一个节点类,一个测试类

一开始我一直在疑惑怎么将首尾节点连起来,即头插法创建的节点怎么连上尾插法创建的节点。

解决方法很简单,就是当创建第一个节点的时候,把它当作头节点和尾节点,这样后面不论是头插还是尾插都是直接有指针的

package qing;
import Nodes.Nodes;
public class qingLinkedlist//链表类
{
	public Nodes first;//标记头结点
	public Nodes last;//表记尾节点
	public int size;//纪录链表长度
	public qingLinkedlist()//无参构造链表
	{
		first  = null;
		last = null;
	}
	public void show()//打印链表函数
	{
		Nodes f = first;
		if(f==null)
			System.out.println("链表已清空!");
		while(f!=null)
		{
			System.out.println(f.data+"    "+f.name);
			f = f.next;
		}
	}public void addFirst(int data, String name)//在头部添加结点(头插法)
	{
		Nodes xin = new Nodes(data,name);//创建新的结点
		if(first==null&&last == null)//判断是否有头节点
		{
			xin.next = last;
			first= xin;//有则直接赋值为头结点
			last = xin;
			size = 1;//长度增加
		}
		else 
		{
			xin.next = first;//无则先将之前的头节点赋值为下一个节点
			first = xin;//在将这个新节点赋值为头结点
			size++;//长度增加
		}
	}
	public void addLast(int data, String name)//尾部添加节点(尾插法)
	{
		Nodes xin = new Nodes(data ,name);
		{
			if(first==null&&last == null)//没有尾结点的时候添加尾结点
			{
				last = xin;
				first = xin;
				size = 1;
			}
			else 
			{
				last.next = xin;
				last = xin;
				size++;
			}
		}
	}
package Nodes;//节点类
public class Nodes
{
	public int data;
	public String name;
	public Nodes next = null;//指针,指向下一个节点
	public Nodes(){}//一定要记得自写无参构造
	public Nodes(int data,String name)//有参构造赋值
	{
		this.data = data;
		this.name = name;
	}
}
import Nodes.Nodes;
import java.util.*;
import qing.qingLinkedlist;
public class Test//测试类
{
	public static void main(String[] args)
	{
		Scanner in = new Scanner(System.in);
		qingLinkedlist mylist = new qingLinkedlist();//创建空链表
		System.out.println("请输入指令:1-添加头节点,2-添加尾结点,3-打印链表,100-退出");
		int zl=0;//用指令进行对应操作
		zl = in.nextInt();
		int data=0;
		String name = null;
		while(zl!=100)
		{
			if(zl==1||zl==2)
			{
				System.out.println("请输入数据:年龄 姓名");
				data = in.nextInt();
				name = in.nextLine();
			}
			if(zl==1)
			{
				mylist.addFirst(data,name);//头插法操作
			}
			if(zl==2)
			{
				mylist.addLast(data,name);//尾插法操作
			}
			if(zl==3)
			{
				mylist.show();//打印链表
			}
			if(zl==4)
			{
				mylist.clear();//清除链表
			}
			if(zl==5)
			{
				System.out.println("链表长度为"+mylist.size());//打印链表长度
			}
			System.out.println("请输入指令:1-添加头节点,2-添加尾结点,3-打印链表,4-清除链表,5-显示长度,100-退出");
			zl = in.nextInt();
		}
	}
}

运行结果

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值