java实现链表结构详细代码
一、数据准备
1. 定义节点
2. 定义链表
1.数据部分
2.节点部分
class DATA //数据节点类型
{
String key;
String name;
int age; } class CLType //定义链表结构
{
DATA nodeData =new DATA();
CLType nextNode;
}
二、追加节点
- 首先分配内存,保存新增节点
- 从头应用head开始追个检查,直到找到最后结点
- 将表尾结点地址部分设置为新增节点的地址
- 将新增节点的地址部分置为null
CLType CLAddEnd(CLType head,DATA nodeData)
{
CLType node,temp;
if((node=new CLType()==null){
System.out.println("申请内存失败");
return null; //申请内存失败
} else{
node.nodeData=nodeData;
node.nextNode=null;
if(head==null)
{
head =node;
return head;
}
temp=head;
while(temp!=null){
temp=temp.nextNode; //查找链表的末尾 }
temp.nextNode=node;
return head;
} }
三、插入头结点
- 分配内存空间
- 使新增节点指向head
- 使head指向新增节点
CLType CLAddFirst(DATA nodeData,CLType head){
CLType node;
if((node=new CLType())==null)
{
return null;
}
else{
node.nodeData=nodeData;
node.nextNode=head;
head=node;
return head;
}
}
四、查找节点
CLType CLFindNode(CLType head,String key)
{
CLType temp;
temp =head;
while(temp!=null){
if(temp.nodaData==key)
return temp;
temp=temp.nextNode;
}
return null;
}
五、插入节点
CLType CLInsentNode(CLType head,String findkey,DATA nodeData)
{
CLtype node,nodetemp;
if((node=new CLType())==null)
{
System.out.println("申请内存失败!");
return null;
}
node.nodaData=nodeData;
nodetemp=(head,findkey); //查找对应节点
if(nodetemp!=null) //若找到节点
{
node.nextNode=nodetemp.nextNode;
nodetemp.nextNode=node;
}
else
{
System.out.println("未找到正确的插入位置!");
}
return head;
}
六、删除节点
int CLDeleteNode(CLType head; String key)
{
CKtype node,temp;
node = head;
temp = head;
while(temp!=null)
{
if(temp.nodeData.key.compareTo(key)==0)
{
node.nextNode=temp.nextNode;
temp=null;
return 1;
}
elas
{
note=temp;
temp=temp.nextNode;
}
}
return 0;
}
七、计算链表长度
int CLLength(CLType head )
{
CLType temp;
temp = head;
int length=0;
while(temp!=null)
{
length++;
temp=temp.nextNode;
}
return length;
}
八、显示所有节点
void CLAllNode(CLType head)
{
CLType temp;
DATA nodeData;
temp = head;
System.out.println("当前链表共有"+CLLength(head)+"个节点。链表数据如下:"); while(temp!=null)
{
nodeData=temp.nodeData;
System.out.println(""+nodeData.key+nodeData.name+nodeData.age);
temp=temp.nextNode;
}
}
java实现链表结构详细代码的更多相关文章
- Java实现链表结构的具体代码
一.数据准备 1. 定义节点 2. 定义链表 1.数据部分 2.节点部分 class DATA //数据节点类型 { String key; String name; int age; } cla ...
- (原创)用Java实现链表结构对象:单向无环链表
转载请注明本文出处:http://www.cnblogs.com/Starshot/p/6918569.html 链表的结构是由一个一个节点组成的,所谓链,就是每个节点的头尾连在一起.而单向链表就是: ...
- Java单链表反转 详细过程
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/guyuealian/article/details/51119499 Java单链表反转 Java实 ...
- JAVA基础——链表结构之单链表
链表:一种数据存储结构.学链表首先要搞懂数组,按朋友的话说,数组和链表的关系就相当于QQ2008和QQ2009. 除非要通过索引频繁访问各个数据,不然大多数情况下都可以用链表代替数组. 链表部分主要要 ...
- java连接oracle数据库详细代码
详细代码: import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;imp ...
- java实现链表结构
1. 定义节点node public class Node<T> { private Node<T> pre; private Node<T> next; priv ...
- JAVA基础——链表结构之双端链表
双端链表:双端链表与传统链表非常相似.只是新增了一个属性-即对最后一个链结点的引用 如上图所示:由于有着对最后一个链结点的直接引用.所以双端链表比传统链表在某些方面要方便.比如在尾部插入一个链结点.双 ...
- Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例【附详细代码】
http://blog.csdn.net/xiefu5hh/article/details/51707529 Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例[附 ...
- 基本算法思想Java实现的详细代码
基本算法思想Java实现的详细代码 算法是一个程序的灵魂,一个好的算法往往可以化繁为简,高效的求解问题.在程序设计中算法是独立于语言的,无论使用哪一种语言都可以使用这些算法,本文笔者将以Java语言为 ...
随机推荐
- 通过文件路径读取CSV表格内的数据
ReadDataFromCSV.h UCLASS() class MYPROJECT_API UReadDataFromCSV : public UBlueprintFunctionLibrary { ...
- MacOs桌面自动被打乱的原因
1 系统设置--Mission Control -- 自动根据最近使用情况排序的勾勾去掉
- vue 利用 v-model 实现 双向传递数据..
注意 <input type='hidden' :value='value'/> 变量名必须 是 value--- 不能叫其他名字++
- IntersectionObserver
创建对象 var io = new IntersectionObserver(callback, option); IntersectionObserver是浏览器原生提供的构造函数,接受两个参数:c ...
- C++_函数1-编程的基本模块函数
以下是<C++ Primer Plus>中第七章的内容: 使用C++函数的3个步骤: 提供函数定义 提供函数原型 调用函数 7.1.1 定义函数 函数分成两类:没有返回值的函数.有返回值的 ...
- C++_代码重用3-私有继承
使用包含:易于理解,类声明中包含表示被包含类的显式命名对象,代码可以通过名称引用这些对象: 使用继承:将使关系更抽象,且继承会引起很多问题,尤其是从多个基类继承时. 私有继承所提供的特性确实比包含多. ...
- JavaScript 中this 初步理解笔记
Javascript中函数中的this通常指向的是函数的拥有者,这个拥有者就是上下文执行对象:另外一点需要注意,this只能在javascript函数内部使用.
- Python-append()/extend()
append()向列表尾部添加一个新的元素,只接受一个参数 extend()只接受一个列表作为参数,将参数中的每个元素都添加到原列表 append()用法示例: >> mylist = [ ...
- 处女座和他的小姐姐(三)----数位DP
链接:https://ac.nowcoder.com/acm/contest/329/G来源:牛客网 经过了选号和漫长的等待,处女座终于拿到了给小姐姐定制的手环,小姐姐看到以后直呼666! 处女座其实 ...
- setContentView和inflate区别
一般用LayoutInflater做一件事:inflate inflate这个方法总共有四种形式(见下面),目的都是把xml表述的layout转化为View对象.其中有一个比较常用,View infl ...