java实现创建链表以及插入节点,查找结点,删除节点等操作
2017-08-31 19:52
1026 查看
涉及两个类,一个DATA,一个是CLType
代码如下:
class DATA{
String key;
String name;
int age;
}
public class CLType {
DATA nodedata=new DATA();
CLType nextnode;
CLType CLAddEnd(CLType head,DATA nodedate){//追加节点
CLType node,htemp;
if((node=new CLType())==null){
System.out.println("申请内存失败!");
return null;
}else{
node.nodedata=nodedate;
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,DATA nodedata){//在开始追加节点
CLType node;
if((node=new CLType())==null){
System.out.println("申请内存失败!");
return null;
}else{
node.nodedata=nodedata;
node.nextnode=head;
head=node;
return head;
}
}
CLType CLTFindNode(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,DATA nodedata){//插入节点
CLType node,nodetemp;
if((node=new CLType())==null){
System.out.println("申请内存失败!");
return null;
}
node.nodedata=nodedata;
nodetemp=CLTFindNode(head,findkey);
if(nodetemp!=null){
node.nextnode=nodetemp.nextnode;
nodetemp.nextnode=node;
}else{
System.out.println("没有找到正确的插入位置!");
}
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;
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.printf("当前的链表一共有%d个节点,链表的所有节点数据如下:",CLLength(head));
while(htemp!=null){
nodedata=htemp.nodedata;
System.out.println(nodedata.key+" "+nodedata.name+" "+nodedata.age);
htemp=head.nextnode;
}
}
}
代码如下:
class DATA{
String key;
String name;
int age;
}
public class CLType {
DATA nodedata=new DATA();
CLType nextnode;
CLType CLAddEnd(CLType head,DATA nodedate){//追加节点
CLType node,htemp;
if((node=new CLType())==null){
System.out.println("申请内存失败!");
return null;
}else{
node.nodedata=nodedate;
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,DATA nodedata){//在开始追加节点
CLType node;
if((node=new CLType())==null){
System.out.println("申请内存失败!");
return null;
}else{
node.nodedata=nodedata;
node.nextnode=head;
head=node;
return head;
}
}
CLType CLTFindNode(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,DATA nodedata){//插入节点
CLType node,nodetemp;
if((node=new CLType())==null){
System.out.println("申请内存失败!");
return null;
}
node.nodedata=nodedata;
nodetemp=CLTFindNode(head,findkey);
if(nodetemp!=null){
node.nextnode=nodetemp.nextnode;
nodetemp.nextnode=node;
}else{
System.out.println("没有找到正确的插入位置!");
}
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;
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.printf("当前的链表一共有%d个节点,链表的所有节点数据如下:",CLLength(head));
while(htemp!=null){
nodedata=htemp.nodedata;
System.out.println(nodedata.key+" "+nodedata.name+" "+nodedata.age);
htemp=head.nextnode;
}
}
}
相关文章推荐
- C语言实现带头结点的链表的创建、查找、插入、删除操作
- 链表的基本操作(创建,查找指定位置元素,删除指定元素,插入,倒置,去重,求集合的差,分别交换结点与交换结点值实现的冒泡排序,将两个有序链表合并成一个有序链表)c语言实现
- 设计一个整型链表类list,能够实现链表节点的插入、删除、以及链表数据的输出操作。
- 树的基本结构,以及利用链表实现树的各项操作(创建、添加/删除/打印树节点、销毁等等)
- 用JAVA语言,编写一个链表类(双向链表),实现插入,删除,查找操作
- javasript 的DOM 节点操作:创建,插入,删除,复制以及查找节点
- C++链表的创建、插入、删除、查找、合并、排序、修改等操作的实现
- 单链表基本操作的实现--创建、插入、查找、删除
- 关于链表结构的基本操作 c 实现 (创建,插入删除,反转,合并链表,查找,是否有环,链表相交情况)
- Java 实现二叉搜索树的创建、查找、插入、删除结点
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- 建立一个带附加头结点的单链表.实现测长/打印/删除结点/插入结点/逆置/查找中间节点/查找倒数第k个节点/判断是否有环
- 二叉查找树带父节点指针的创建,销毁,查找,删除,插入,找前驱后继,找最小值最大值(递归和非递归的实现)
- (C++版)链表(二)——实现单项循环链表创建、插入、删除等操作
- (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作
- java实现单链表的初始化,创建,删除,插入,查找,排序,同项删除,退出等功能
- java建立双向链表,插入结点,删除节点
- (C语言版)链表(四)——实现双向循环链表创建、插入、删除、释放内存等简单操作
- C语言实现双向链表删除节点、插入节点、双向输出等操作