java实现链表结构详细代码
2016-03-31 14:57
453 查看
一、数据准备
1. 定义节点
2. 定义链表
1.数据部分
2.节点部分
二、追加节点
首先分配内存,保存新增节点
从头应用head开始追个检查,直到找到最后结点
将表尾结点地址部分设置为新增节点的地址
将新增节点的地址部分置为null
三、插入头结点
分配内存空间
使新增节点指向head
使head指向新增节点
四、查找节点
五、插入节点
六、删除节点
七、计算链表长度
八、显示所有节点
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; } }
相关文章推荐
- Struts实例
- Java内存区域-JVM
- javaweb --- jsp页面遍历list<map>类型的数据
- 如何利用反射机制另一个类中的private属性 | Java基础
- JNI/NDK开发指南(三)——JNI数据类型及与Java数据类型的映射关系
- java导出excel
- java基础高级2 MySQL 高级
- javacript 优化2
- Java学习·this关键字在构造函数间调用
- Java - Exception
- Eclipse设置:背景与字体大小和xml文件中字体大小调整
- ubuntu 安装 opencv2.4.9 java环境
- Jedis存储Java对象--Java序列化为byte数组方式
- Struts2 - <s:property name="">
- Myeclipse 10.x 安装Aptana3.2 插件
- springmvc提交表单,格式问题:The request sent by the client was syntactically incorrect.
- SpringMVC关于json、xml自动转换的原理研究[附带源码分析]
- Android Studio 默认快捷键(亲测)与Eclipse常用快捷
- eclipse 自动生成getter setter的问题
- java导出数据到Excel