Java数据构造之链表(Linked List)
2019-11-12 01:25 来源:原创 网络编辑:admin 阅读次 报错//定义SingleLinkedList 办我们的英公
class SingleLinkedList {
//先初始募化壹个头节点, 头节点不要触动, 不寄存放详细的数据
private HeroNode head=new HeroNode(0, "", "");
//前往头节点
public HeroNode getHead() {
return head;
}
//添加以节点到单向链表
//文思,当不考虑编号以次时
//1. 找到以后链表的最末节点
//2. 将最末此雕刻个节点的next 指向 新的节点
public void add(HeroNode heroNode) {
//鉴于head节点不能触动,故此我们需寻求壹个辅弼遍历 temp
HeroNode temp= head;
//遍历链表,找到最末
while(true) {
//找到链表的最末
if(temp.next==null) {//
break;
}
//假设没拥有拥有找到最末, 将将temp后移
temp= temp.next;
}
//当参加以while循环时,temp就指向了链表的最末
//将最末此雕刻个节点的next 指向 新的节点
temp.next= heroNode;
}
//第二种方法在添加以英公时,根据排名将英公拔出产到指定位置
//(假设拥有此雕刻个排名,则添加以违反败,并给出产提示)
public void addByOrder(HeroNode heroNode) {
//鉴于头节点不能触动,故此我们依然经度过壹个辅弼指针(变量)到来僚佐找到添加以的位置
//鉴于单链表,鉴于我们找的temp 是位于 添加以位置的前壹个节点,不然拔出产不了
HeroNode temp= head;
boolean flag=false; // flag标注识表记标注帜添加以的编号能否存放在,默认为false
while(true) {
if(temp.next==null) {//说皓temp曾经在链表的最末
break; //
}
if(temp.next.no > heroNode.no) { //位置找到,就在temp的前面拔出产
break;
} else if (temp.next.no==heroNode.no) {//说皓期望添加以的heroNode的编号已然存放在
flag =true; //说皓编号存放在
break;
}
temp =temp.next; //后移,遍历以后链表
}
//判佩flag 的值
if(flag) { //不能添加以,说皓编号存放在
System.out.printf("预备拔出产的英公的编号 %d 曾经存放在了, 不能参加以\n", heroNode.no);
} else {
//拔出产到链表中, temp的前面
heroNode.next= temp.next;
temp.next = heroNode;
}
}
//修变节点的信息, 根据no编号到来修改,即no编号不能改.
关键词: