《算法(第四版)》 习题:1.3.19
来源:互联网 发布:js 离开页面时提示 编辑:程序博客网 时间:2024/05/29 10:23
1、问题描述
给出一段代码,删除链表的尾结点,其中链表的首结点为first。
2、算法思路
为删除尾结点,需要找到倒数第二个结点。尾节点的标志为last.next==null是否成立,找到尾节点后需将倒数第二个节点SecondLast.next=null即可删除尾节点。
3、编程实现(Java实现)
public class Solution_19 {
public static void main(String[] args){
String[] strs = {"You","are","a", "good" , "boy"};
Node first = creatList(strs); //建立一个链表
System.out.println("删除最后一个节点之前链表为:");
printList(first); //打印原始链表
delLastNode(first); //删除最后一个节点
System.out.println("删除最后一个节点之后链表为:");
printList(first); //打印删除节点后链表
}
/*
* 节点内部类
*/
private class Node{
String item;
Node next;
}
/**
* 建立以字符数组值的链表,数组至少需要一个元素
* @param strs
* @return firstNode
*/
public static Node creatList(String[] strs){
/*
* 建立头结点
*/
Solution_19 solution = new Solution_19();
Node newnode = solution.new Node();
newnode.item = strs[0];
Node first = newnode;
/*
* 建立后续节点
*/
Node current = first;
for(int i=1;i<strs.length;i++){
newnode = solution.new Node();
newnode.item = strs[i];
current.next = newnode;
current = newnode;
}
current.next=null;//尾节点指针指向null
return first;
}
/**
* 删除最后一个节点
* @param first
*/
public static void delLastNode(Node first){
if(first.next==null) first = null; //如果只有一个节点,则最后一个节点就是本身
else{ //如果有两个或两个以上节点,就需要查找最后一个节点,以及记录倒数第二个节点
Node current = first;
Node SecondLast = first;
while(current.next!=null){
SecondLast = current;
current = current.next;
}
SecondLast.next = null;//删除链表的尾节点,即把倒数第二个节点的指针指向Null即可
}
}
/**
* 打印首节点first的链表
* @param first
*/
private static void printList(Node first){
System.out.println(first.item);//打印头节点
Node current = first;
while(current.next!=null){
current = current.next;
System.out.println(current.item);
}
}
}
4、测试结果
0 0
- 《算法(第四版)》 习题:1.3.19
- 《算法(第四版)》 习题:1.3.9
- 《算法(第四版)》 习题:1.3.14
- 算法第四版习题
- 《算法(第四版)》 习题:1.3.9 补齐左括号
- 【算法导论(第三版)】第四章部分习题代码
- 算法(第四版) chapter 1.1部分习题答案
- 网上一些《算法(第四版)》习题答案链接
- 算法第四版 课后习题答案
- 算法-第四版习题索引汇总
- 算法第四版习题1.1.32,直方图
- 算法 第四版 习题 答案 笔记 1.1
- 《算法(第四版)》 习题:1.3.10 将算术表达式由中序表达式转为后序表达式
- 算法-第四版-1.3 背包、队列和栈-习题索引汇总
- c++primer(第四版)习题10.18
- 《c++ Primer(第四版)》习题9.13
- 《c++ Primer(第四版)》习题9.14
- 《c++ Primer(第四版)》习题9.18
- 淘宝HSF服务的原理以及简单的实现
- 线程管理---互斥量同步机制
- web前端开发学习预备知识
- Android 简单Dialog的使用.
- 当我步入直播这道坑
- 《算法(第四版)》 习题:1.3.19
- SQLServer之视图篇
- Java并发编程——this引用逸出("this" Escape)
- 是否同一棵二叉搜索树 (25分)
- CentOS常用基础操作
- poj 3278 Catch That Cow(bfs)
- String类的hashCode方法的算法解读
- [Algorithm]随机发牌
- 中点画椭圆