线性表——循环链表和双向链表

1.循环链表:首尾相连的链表。
2.单循环链表:在单链表中,如果最后一个结点的链域值不是NULL,而是指向头结点,则整个链就形成了一个环。
3.双向链表:链表的每一个结点中有2个指针域,一个指向直接后继,一个指向直接前驱。
4.双向循环链表:将双向链表中的头结点和尾结点链接起来。
5.判断双向循环链表为空的条件:头结点的前驱和后继指针均指向了自己。
6.算法

package com.bocloud.dulnode;

/**
 * 双向循环链表
 * 
 * @author dongkai
 *
 */
public class DulNode {

    char data;
    DulNode next;
    DulNode prior;
}

package com.bocloud.dulnode;

public class Test {

    /**
     * 插入算法(在结点P之前插入S)
     * 
     * @param h
     * @param i
     * @param x
     * @return
     */
    int insert(DulNode h, int i, char x) {
        DulNode p, s;
        int j = 1;
        p = h.next;
        while (p != h && j < i) {
            j++;
            p = p.next;
        }
        if (j == i) {
            s = new DulNode();
            s.data = x;
            s.prior = p.prior;
            p.prior.next = s;
            s.next = p;
            p.prior = s;
            return 1;
        } else {
            return 0;
        }
    }

    /**
     * 删除算法(删除第i个结点P)
     * 
     * @param h
     * @param i
     * @return
     */
    char dele(DulNode h, int i) {
        char s;
        DulNode p;
        int j = 1;
        p = h.next;
        while (p != h && j < i) {
            j++;
            p = p.next;
        }
        if (j == i) {
            s = p.data;
            p.prior.next = p.next;
            p.next.prior = p.prior;
            p = null;
            return s;
        } else {
            return 0;
        }
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值