双链表

/*双链表
求表长,按位查找,按值查找,遍历等与单链表类似
*/

//存储结构定义

typedef int DataType;
typedef struct DulNode
{
    DataType data;                //data为数据域
    struct DulNode *prior,*next;        //prior为前驱指针域,next为后继指针域
}DulNode,*first;            //first为双链表头指针

//插入操作
void Insert(DulNode *first,int i,DataType x)
{
    p = first;count = 0;            //工作指针p指向头结点
    while(p != NULL && count < i-1)
    {
        p = p->next;
        count++;
    }
    if(p == NULL)
    {
        printf("位置");exit(-1);
    }else{
        s = (DulNode *)malloc(sizeof(DulNode));
        s->data = x;            //申请结点s,其数据域为x
        s->prior = p;            //将结点s插入结点p后
        s->next = p->next;
        p->next->prior = s;
        p->next = s;
    }
}

//删除操作
DataType Delete(Node *first,int i)
{
    p = first;count = 0;            //工作指针p指向头结点
    while(p != NULL && count < i)
    {
        p = p->next;
        count++;
    }
    if(p == NULL)
    {
        printf("位置");exit(-1);
    }else{
        q = p->next;x = q->data;        //暂存被删结点
        (p->prior)->next = p->next;            //摘链
        (p->next)->prior = p->prior;
        free(q);
        return x;
    }
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值