91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java 手工實現LinkedList容器

發布時間:2020-06-26 09:50:22 來源:網絡 閱讀:312 作者:wx5d21d5e6e5ab1 欄目:編程語言

泛型、創建鏈表、重寫打印、返回索引位置的值、返回指定節點、刪除節點、指定位置添加節點、判斷索引異常

需要兩個類,一個表示節點信息和指針,一個表示節點位置并實現鏈表

第一個不同文件類:

public class node {

    node next;  //指向下一個節點
    node pre;   //指向上一個節點
    Object obs;  //節點數據

    public node(Object obs)
    {
        this.obs=obs;
    }

}

第二個實現類:

package hell;
public class test<E> {
    private node first; //節點首位置
    private node last;  //節點實時位置
    private int size;  //記錄節點個數

public void add(E obs) //添加元素添加鏈表
{
    node p=new node(obs);
    if(first==null)    //如果是第一個元素
    {
        first=p;      //定位first
        last=p;       //定位實時last
    }
    else
    {
        last.next=p;   //將第二個節點與第一個節點雙向鏈接,并使得第二個節點指向null
        p.pre=last;
        p.next=null;
        last=p;

    }
    size++;

}
public void checkIndex(int index) //判斷索引異常
{
    if(index<0||index>=size)
    {
        throw new RuntimeException("索引異常");
    }
}
public E get(int index) //返回索引的值,根據索引大小來判斷查找順序
{
    checkIndex(index);
    node p;
    if(index>=size/2)
    {
        p=last;
        for(int i=size-1;i>index;i--)
        {
            p=p.pre;
        }
    }
    else
    {
        p=first;
        for(int i=0;i<index;i++)
        {
            p=p.next;
        }
    }
    return (E)p.obs;
}

public node getNode(int index)  //返回指定節點
{
    checkIndex(index);
    node p=first;
    for(int i=0;i<index;i++)
    {
        p=p.next;
    }
    return p;

}
public void rem(int index)//刪除節點
{
    checkIndex(index);
    node p=getNode(index);
    node up=p.pre;
    node down=p.next;
    if(up!=null)    //判斷up和down是否為空,不能讓空指針指向其他,只適合一般節點和尾節點
    {
        up.next=down;  //刪除尾節點時,使得尾節點的上一個節點指向空,從而刪除尾節點
    }
    if(down!=null)
    {
        down.pre=up;  //刪除頭節點時,只是讓頭節點的下一個節點指向上一個節點為空,但頭節點
                    //依舊能指向下一個節點,故無法刪除
    }
    if(index==0) //刪除頭節點
    {
        first=p.next;
    }
    if(index==size-1)
    {
        last=null;
    }

}
public void add(int index,E obs)//指定位置添加節點
{
    checkIndex(index);
    node newnode=new node(obs);
    node p=getNode(index);
    node up=p.pre;

    up.next=newnode;
    newnode.pre=up;
    newnode.next=p;
    up=newnode;

}
public String toString()//重寫toString方法
{
    StringBuilder s=new StringBuilder();
    s.append("[");
    node p=first;
    while(p!=null)
    {
        s.append(p.obs+",");
        p=p.next;
    }
    s.setCharAt(s.length()-1, ']');
    return s.toString();

}

public static void main(String[]args)
{
    test<String> link=new test<>();
    link.add("a");
    link.add("b");
    link.add("c");
    System.out.println(link);
    System.out.println(link.get(2));
    node p=link.getNode(2);
    System.out.println(p.obs);
    link.rem(0);
    System.out.println(link);
    link.add(3,"d");
    System.out.println(link);
}

}

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

翁牛特旗| 苍南县| 福海县| 红安县| 南召县| 三明市| 封开县| 石首市| 绥芬河市| 贺州市| 桦川县| 微博| 新田县| 当涂县| 会泽县| 龙南县| 呈贡县| 门源| 云梦县| 龙岩市| 阳原县| 德钦县| 高安市| 宜章县| 甘孜县| 伊吾县| 海城市| 安平县| 垣曲县| 四平市| 吉水县| 平阴县| 迁安市| 元氏县| 伊金霍洛旗| 仪陇县| 临洮县| 江油市| 安阳市| 哈密市| 大余县|