java常用算法学习笔记--链表篇
来源:互联网 发布:品茗网络计划 添加备注 编辑:程序博客网 时间:2024/06/05 18:28
1顺序表结构的缺点
在插入或者删除结点时,需要移动大量的数据。
如果表特别大,很难分配足够的连续存储空间。
2链表的结点特点
含有两个部分,数据部分:保存该节点的实际数据。地址部分:保存下一个结点的引用地址。
3链表结构的优劣
优:不需要分配连续的地址空间,可以用new函数分配结点的存储空间,将节点赋值null即可释放其占用的内存空间
劣:浪费存储空间,需要保存额外的引用变量。对链表的访问也只能从头开始逐个查找。
4链表的细分
单链表:节点中只含有一个引用。双向链表:每个节点中包含指向下一个,上一个节点的两个引用。
单循环链表:单链表中,将终端结点的引用null改为头节点即可构成单循环链表。
多重链的循环链表:将表中的结点链在多个环上。
5用java语言表示链表
class Data2{
String key;
String name;
int age;
}
class cltype{
Data2 nodeData=new Data2();
cltype nextNode;
}
追加一个结点
cltype claddend(cltype head,Data2 nodeData){
cltype node,htemp;
if(node=new cltype())==null)
{
system.out.print(申请失败);
return null;
}else
{
node.nodeData=nodeData;
node.nextNode=null;
if(head==null){
head==node;
return head;
}
htemp=head;
while(htemp.nextNode!=null){
htemp=htemp.nextNode;
}
htemp.nextNode=node;
return head;
}
}
插入头节点
cltype claddfirst(cltype head,Data2 nodeData)
{
cltype node;
if(node==newcltype()==null)
{
system.out.print(申请失败);
return null;
}
else
{
node.nodeData=nodeData;
node.nextNode=head;
head=node;
return head;
}
}
查找结点
cltype clfindNode(cltype head,string key){
cltype htemp;
htemp=head;
while(htemp!=null){
if(htemp.nodeData.key.compareto(key)==0)
{
return htemp;
}
htemp=htemp.nextNode;
}
return null;
}
插入节点
cltype clinsertNode(cltype head,string findkey,Data2 nodeData){
cltype node,nodetemp;
if(node=new cltype())=null
{
system.out.print(申请失败);
return null;
}
node.nodeData=nodeData;
nodetemp=clfindnode(head,findkey);
if(nodetemp!=null)
{
node.nextnode=nodetemp.nextndoe;
nodetemp.nextndoe=node;
}
else
{
system.out.print("未找到正确的插入位置);
}
return head;
}
删除结点
int clDeleteNode(cltype head,string key){
cltype node,htemp;
htemp=head;
node=head;
while(htemp!=null)
{
if(htemp.nodeData.key.compareto(key)==0){
node.nextNode=htemp.nextnode;
htemp=null;
return 1;
}
else
{
node=htemp;
htemp=htemp.nextNode;
}
}return 0;
}
计算链表长度
int cllength(cltype head){
cltype htemp;
int len=0;
htemp=head;
while(htemp!=null)
{
len++;
htemp=htemp.nextNode;
}
return len;
}
显示所有结点
void clallnode(cltype head)
{
cltype htemp;
Data nodeData;
htemp=head;
system.out.print()
while(htemp!=null)
{
nodeData=htemp.nodeData;
sys.out.print(node 内容)
htemp=htemp.nextNode;
}
}
end!!!!
- java常用算法学习笔记--链表篇
- JAVA常用算法手册学习笔记
- 黑马学习笔记_常用算法复习
- 学习笔记,一些常用排序算法。
- <学习笔记> Java排序算法
- Java学习笔记53:Java常用库
- java基础学习—常用算法
- java 常用算法--复习笔记--基本排序算法
- java数组学习笔记常用的方法
- Java学习笔记44:常用集合使用
- java基础学习笔记_常用类
- JAVA学习笔记(十八)- API常用类
- JAVA学习笔记(五十七)- 常用设计模式
- Java学习笔记之常用类
- java正则表达式,常用部分,学习笔记。
- JAVA 常用API String 对象 学习笔记
- java学习笔记之常用类
- 学习笔记03-java常用类
- Observer 观察者模式
- 7-17 java学习笔记
- Android 解决沉浸式状态栏和华为虚拟按键冲突
- Sybase数据格式成db2数据格式
- NOIP 提高组 初赛 四、阅读程序写结果 习题集(五)NOIP2006-NOIP2007
- java常用算法学习笔记--链表篇
- UltraISO软碟通U盘安装Centos7 的各种报错及解决方案
- SpringBoot 第一个项目
- JavaScript
- 51Nod-1815-调查任务
- 基于IntelliJ IDEA编译器编写maven+Spring MVC+MyBatis(SSM)项目(一)
- eclipse常用快捷键
- 去ST学习NFC回来与Jack对话反思
- UI开源库