`
杨杨和花花
  • 浏览: 22451 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

关于链表的一些基本操作

阅读更多
今天匆忙之中就快速展示我的链表一些基本操作,包括增加,删除,插入,查找,求长度。
public class ListTest {
//定义几个全局变量
public static  Node front=null;//第一个结点
public static  Node last=null;//最后一个结点
public static void main(String args[]){
ListTest test=new ListTest();
//调用链表里的方法
for(int i=0;i<10;i++){
test.add("结点"+i);
}
  
//调用第一个递归方法
test.NodePrint1(front);

//调用插入的方法
Node node=new Node();
node.obj="插入的新9结点";
test.Nodecharu(node,3);

  
//调用第一个递归方法
test.NodePrint1(front);

//调用删除方法
test.DeletNode(2);

    //调用第一个递归方法
        test.NodePrint1(front);

     //获取当前链表的长度
int t=test.GetLength();
System.out.println("当前链表的长度为:"+t);

Node node2=new Node();
node2.obj="插入的新9结点";
int k=test.LookNode(node2);
System.out.println("找到该结点的位置为"+k);
}
/*
* 增加的方法
* obj为你添加的数
*/
public void add(Object obj){
//创建一个新的结点
Node fristnode=new Node();
fristnode.obj=obj;
if(front==null){
front=fristnode;//把创建的新结点赋给第一个结点
last=front;//第一个结点和最后一个结点相等
}else{
//增加肯定在链表尾增加
             last.child=fristnode;//最后一个结点指向下一个新结点
             fristnode.parent=last;
             last=fristnode;//把最后一个结点记为新的last
}
}
/**
* 打印的方法,这个为从左到右遍历
*/
public void NodePrint1(Node root){
if(root!=null){
//取出该结点元素
Object data=root.obj;
//取出下一个结点进行递归
System.out.println("结点元素为:"+data);
Node node1=new Node();
    node1=root.child;
NodePrint1(node1);
}
}
/**
* 这个为从右到左的遍历
*/
public void NodePrint2(Node root){
if(root!=null){
//取出该结点元素
Object data=root.obj;
//取出该结点上一个结点进行递归
System.out.println("结点元素为"+data);
Node node2=new Node();
    node2=root.parent;
NodePrint2(node2);
}

}
/**
* 获得当前链表的长度
*/
public int GetLength(){
int count=0;
     Node node3=new Node();
     node3=front;
while(node3!=null){
node3=node3.child;
count++;
   }
return count;
}
/**
* 插入的方法
* node 为你插入的结点,i为你插入的位置
*/
public void Nodecharu(Node node,int i){
if(i<0||i>this.GetLength()){
throw new java.lang.RuntimeException("该位置不存在");
}else{
if(i==0){
front=node;
}else{
    //创建一个新的结点来记录插入的结点
Node fristnode=new Node();
        fristnode=front;
//找的要插入位置的结点
for(int j=1;j<i;j++){
     fristnode=fristnode.child;
     }
//创建一个新的结点来记录插入结点的上一个结点
Node secondnode=new Node();
secondnode=fristnode.parent;

//建立关系
node.child=fristnode;
fristnode.parent=node;

node.parent=secondnode;
secondnode.child=node;
}
}
}
/**
* 删除的方法
* i为你删除的位置
*/
public void DeletNode(int i){
if(i<1||i>this.GetLength()){
throw new java.lang.RuntimeException("该位置不存在");
}else{
//创建一个新的结点来记录插入的结点
Node DeletNode=new Node();
DeletNode=front;
if(i==1){
front=DeletNode.child;
}else{
    //找的要删除位置的结点
for(int j=1;j<i;j++){
    DeletNode= DeletNode.child;
   }
//找到父结点
Node DeletParent=new Node();
DeletParent=DeletNode.parent;
if(i==this.GetLength()){
DeletParent.child=null;
}else {
//找到子结点
Node DeletChild=new Node();
DeletChild=DeletNode.child;

//建立相互关系
DeletParent.child=DeletChild;
DeletParent=DeletChild.parent;

}

    }
}
}

/**
* 查找的方法
*/
public int LookNode(Node node){
//创建一个整数来记录你查到的位置
int k=1;
//创建一个结点
Node renode=new Node();
renode=front;
while(renode.obj!=node.obj){
k++;
renode=renode.child;
}
return k;
}
}
代码仅供参考,其实尚且有些毛病,还需改进,细心的人会发现的。
分享到:
评论

相关推荐

    链表的基本操作

    链表很多同学不太理解,对此写了下链表的基本操作,头插法,对应位置修改删除等基本功能,仅提供自己学习。

    实验二:链表的基本操作的实验报告

    实验涵盖了以下几种基本操作: 1. 查找元素:`Locate_Linklist`函数用于在链表中找到指定元素的位置,返回元素在链表中的索引。如果未找到元素,则返回0。 2. 插入元素:`insertList_after`函数允许在链表的指定位置...

    链表的基本操作 C语言程序

    链表的基本操作 C 语言程序 链表是一种基本的数据结构,它在计算机科学和软件工程中有着广泛的应用。本文将介绍链表的基本操作,包括链表的初始化、判空、打印栈的内容、入栈和出栈等操作,并提供了 C 语言程序代码...

    c++链表的基本操作

    除了上述基本操作,还有许多高级的链表操作,如反转链表、合并两个已排序链表等。这些操作都需要深入理解和熟练掌握指针的使用。 总结来说,C++中的链表是通过指针链接的数据结构,提供了一种灵活的方式存储和操作...

    实验二 链表基本操作的实现

    在这个实验“链表基本操作的实现”中,我们将深入理解链表的概念,学习如何创建、插入、删除节点,以及进行其他基本操作。 链表不同于数组,它不连续存储元素,而是通过节点间的指针链接。每个节点包含两部分:数据...

    堆栈链表与队列链表的基本操作

    本篇文章将详细探讨堆栈链表和队列链表的基本操作。 首先,让我们了解堆栈(Stack)的概念。堆栈是一种后进先出(LIFO,Last In First Out)的数据结构,类似于日常生活中的叠盘子。在堆栈中,最后加入的元素将是第...

    关于链表基本操作的C++源代码

    期末课程设计题目,使用C++实现关于链表的基本操作,本人也是学生,初学,写的不好,仅供参考。

    链表基本操作源码

    链表是一种常用的数据...以上就是关于链表基本操作的详细讲解,包括链表的定义、创建、查找、插入和删除,以及在C语言中如何处理双向链表。这些知识是理解和实现链表算法的基础,也是许多数据结构和算法问题的起点。

    链表的基本操作实现、还有一种链表排序、还有一个2链表的合并

    接下来,我们将深入探讨链表的基本操作,链表排序以及两个链表的合并。 首先,链表的基本操作包括插入、删除和查找。在C语言中,链表由一系列节点组成,每个节点包含数据和指向下一个节点的指针。 1. 插入:在链表...

    循环链表的基本操作与实现

    ### 循环链表的基本操作与实现 #### 概述 循环链表是一种特殊的数据结构,在其中最后一个节点指向头节点,形成一个闭环。这使得在处理列表时无需判断是否达到末尾,因为总是可以从任意一个节点继续遍历下去。本...

    一个关于双向链表的基本操作程序

    本程序是一个关于双向链表的操作,包括插入节点,删除节点,遍历等

    链表的基本操作C++完整代码实现.zip

    该资源为链表的基本操作(C++实现),包括两部分:首先是链表的基本操作(包括链表的动态创建和销毁、内存释放、节点的插入、删除、打印);其次是链表的强化操作(包括链表的整体反转、特定区间元素反转、各种链表...

    链表的基本操作.docx

    本文主要探讨了链表的基本操作,包括插入结点、删除结点以及查找结点。 1. **链表结点的插入** - **在空链表中插入结点**:当链表为空时,首先需要创建一个新结点。通过`calloc()`函数动态分配内存,为新结点分配...

    使用C++实现的链表的基本操作

    以上就是使用C++实现链表基本操作的方法。这些操作是链表操作的核心,掌握了它们,就能处理更复杂的链表问题,例如排序、合并等。在实际编程中,还可以考虑使用STL中的`std::list`容器,它提供了丰富的成员函数来...

    线性链表的基本操作(C语言)

    线性链表的基本操作(C语言) 线性链表是一种基础数据结构,它由一系列结点组成,每个结点都包含一个数据元素和一个指向下一个结点的指针。线性链表的基本操作包括插入、删除、排序、初始化、判空、销毁、求长度等...

    链表基本操作

    ### 链表基本操作概览 链表是由一系列节点组成的,每个节点包含数据部分和指向下一个节点的指针。链表的操作主要围绕这些节点进行,包括创建链表、插入节点、删除节点、获取节点值以及对链表进行排序等。 #### ...

Global site tag (gtag.js) - Google Analytics