JAVA数据结构(二)

2.8.单链表上的删除操作算法

public void remove(int i) throws Exception {
    Node p = head;                            //初始化p指向头结点,j为计数器
    int j = -1;
    while(p.next != null && j < i-1) {        //寻找第i个结点的前驱
        p = p.next;
        ++j;
    }
    if (j > i-1 || p.next == null){
        throw new Exception("删除位置不合法"); //修改指针,使待删除结点从单链表中脱离出来
    p.next = p.next.next;

3.3求链栈的长度操作算法

public int length() {
    Node p = top;            //初始化,p指向栈顶元素,length为计数器
    int length = 0;    
    while (p != null) {      //从栈顶元素向后查找,直到p指向空
        p = p.next;          //p指向后继结点
        ++length;            //长度加1
    }
    return length;

3.4链栈的入栈操作算法

public void push(Object x) {
    Node p = new Node(x);        //构造一个新结点
    p.next = top;
    top = p;                    //新结点成为当前的栈顶结点
}

3.5链栈的出栈操作算法

public Object pop() {
        if (isEmpty()) {
            return null;
        }
        else {
            Node p = top;        //p指向被删结点(栈顶结点)
            top = top.next;      //修改链指针,使栈顶结点从链栈中移去
            return p.data;       //返回栈顶结点的数据域的值
        }
}

3.6循环顺序队列的入队操作算法

public void offer(Object x) throws Exception{
    if ((rear + 1) % queueElem.length == front)  //队列满
        throw new Exception("队列已满");          //抛出异常
    else {
        queueElem[rear] = x;
 
    //x存入rear所指的数组存储位置中,使其成为新的队尾元素
    
    rear = (rear + 1) % queueElem.length;        //修改队尾指针
}

3.8 链队列的入队操作算法

public void offer(Object x) {
    Node p = new Node(x);            //初始化队列新结点
    if (front != null){              //队列非空
        rear.next = p;
        rear = p;                    //改变队尾的位置
    }
    else
        front = rear = p;
}

文章链接: https://www.mfisp.com/21945.html

文章标题:JAVA数据结构(二)

文章版权:梦飞科技所发布的内容,部分为原创文章,转载请注明来源,网络转载文章如有侵权请联系我们!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
建站教程

JAVA数据结构

2023-7-11 13:54:03

建站教程

Java基础

2023-7-11 13:58:30

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索

梦飞科技 - 最新云主机促销服务器租用优惠