1、创建链结构实体Node

/**
* 链表结构实体类
*/
public class Node {
Node next = null; //下一节点
int data; //节点数据 public Node(int data) {
this.data = data;
}
}

2、链表的操作(链表的头结点创建、增加元素,删除元素、求链表长度、根据输入数据求下标)

/**
* 链表功能实现
*/
public class Linked_List { Node head = null; //链表头结点 /**
* 1、求链表长度:以备后续用
* 思路:遍历一个节点,记录长度加一(注意:初始长度给0)
*
* @return int:返回长度
*/
public int get_length() {
int list_length = ;
Node cur_node;
cur_node = head;
while (cur_node != null) {
list_length++;
cur_node = cur_node.next;
}
return list_length;
} /**
* 2、添加
* 思路:找到链表的末尾节点,把新的数据节点添加在后面
*
* @param date :插入的数据
*/
public void add_Node(int date) {
Node newnode = new Node(date);
if (head == null) { //判断是否只有一个头结点
head = newnode;
return;
} else {
Node temp = head;
while (temp.next != null) { //不为头节点,找到最后一个节点
temp = temp.next;
}
temp.next = newnode;
}
} /**
* 3、删除
* 思路:传入下标,根据下标,找到相应的节点,删除节点的前一节点指向删除节点下一节点
*
* @param index:删除的数据的下标
* @return
*/
public boolean delete_Node(int index) {
if (index < || index > get_length()) {
System.out.println("你所要删除的元素下标输入有问题");
return false;
}
if (index == ) {
head = head.next;
return true;
}
Node pre_node = head;
Node cur_node = pre_node.next;
int i = ;
while (pre_node != null) {
if (i == index) {
pre_node.next = cur_node.next;
return true;
} else {
pre_node = pre_node.next;
cur_node = cur_node.next;
i++;
}
}
return true;
} /**
* 4、根据输入数据求下标
* @param data:输入的数据
* @return int:返回输入数据下标
*/
public int get_data(int data) {
Node node = head;
int index = ;
while (node != null){
if (node.data == data){
return index;
}
node = node.next;
index++;
}
return -;
}
/**
* 5、打印显示输出
*/
public void print_linklist() {
Node node = head;
while (node != null) {
System.out.print(node.data + " ");
node = node.next;
}
System.out.println();
} public static void main(String[] args) { //1、创建链表
Linked_List linked_list = new Linked_List();
//2、添加链表元素
linked_list.add_Node();
linked_list.add_Node();
linked_list.add_Node();
linked_list.add_Node();
//3、打印添加的元素
linked_list.print_linklist();
//4、删除下标元素
linked_list.delete_Node();
linked_list.print_linklist(); //5、获取链表长度
System.out.println("链表长度 "+ linked_list.get_length()); int index = linked_list.get_data(); if (index == -){
System.out.println("你要查找的数据不存在");
}else{
System.out.println("你要查找的数据元素下标 " + index);
}
}
}

3、实现结果小测试


链表长度 3     (1被删除,长度减一)
你要查找的数据不存在 (由于1已被删除,所有在main中求1的下标不在)

最新文章

  1. nodejs + ionic2 + cordova环境搭建
  2. 云计算和大数据时代网络技术揭秘(十七)VOQ机制
  3. [CareerCup] 4.2 Route between Two Nodes in Directed Graph 有向图中两点的路径
  4. Nginx 的线程池与性能剖析
  5. [GeekBand] 面向对象的设计模式(C++)(2)
  6. windows下安装pip
  7. C#中引用变量是否应该加ref?
  8. maven中央仓库、远程仓库地址
  9. icns图标的制作
  10. Java学习笔记(二十):多态
  11. windows cmd相关操作
  12. SQL server学习(五)T-SQL编程之存储过程
  13. js 回车键事件
  14. centos 7安装cppman
  15. nginx解析漏洞,配置不当,目录遍历漏洞环境搭建、漏洞复现
  16. IOS 6 自动布局 入门
  17. [NOIP2017]逛公园(DP)
  18. 点滴积累【SQL Server】---使用Kettle实时同步DB2数据到SQLserver
  19. 【bzoj2561】最小生成树
  20. Luogu 2467 [SDOI2010]地精部落

热门文章

  1. 峰回路转:去掉 DbContextPool 后 Windows 上的 .NET Core 版博客表现出色
  2. OCP培训 Oracle 12c/18c/19c OCP认证实战培训【送OCP优惠名额】
  3. 维恩贝特面试JAVA后台开发
  4. QMS 的趨勢概述
  5. zookeeper和dubbo安装与搭建
  6. 逆向破解之160个CrackMe —— 016
  7. SpringBoot与Shiro整合权限管理实战
  8. C# 中的数据库操作~存储过程篇Mysql SqlServer
  9. Windows10下载mysql详解
  10. Hadoop RPC机制详解