数据结构:双链表

由于双链表中大部分操作其实和单链表操作类似,所以这里只挑关键的一些函数 1、定义与初始化

typedef struct DNode
{
    ElementType data;
    struct DNode *prior,*next;
}DNode,*DLinkList;

bool InitialDLinkList(DLinkList &L){
    L = (DNode *)malloc(sizeof(DNode));
    if (L==NULL)
    {
        return false;
    }
    L->prior = NULL;
    L->next = NULL;
    return true;

}

2、在某结点添加和删除后继结点

bool InsertNextDNode(DNode *p,DNode *s){//在p结点添加后继结点
    if (p==NULL||s==NULL)
    {
        return false;
    }
    s->next = p->next;
    if (p->next!=NULL)
    {
        p->next->prior=s;
    }
    s->prior = p;
    p->next = s;
    return true;
}

bool DeletNextDNode(DNode *p){//删除p的后继结点
    if(p==NULL) return false;
    DNode *q = p->next;
    if (q==NULL) return false;
    p->next = q->next;
    if (q->next!=NULL)
        q->next->prior=p;
    free(q);
    return true;

}

3、摧毁整个双链表

oid DestroyDLinkList(DLinkList &L){
    while (L->next!=NULL)
    {
        DeletNextDNode(L);
    }
    free(L);
    L=NULL;
}

4、打印链表,包括打印整个链表,和从某个结点开始前向或者后向打印

void print(DLinkList &L){
    DNode *p = L->next;
    while(p->next!=NULL){
        printf("%d",p->data);
        p=p->next;
    }
}

void print_next(DNode *p){
    while(p->next!=NULL){
        printf("%d",p->data);
        p=p->next;
    }
}

void print_prior(DNode *p){
    while(p->prior!=NULL){
        printf("%d",p->data);
        p=p->prior;
    }
}

本文由博客一文多发平台 OpenWrite 发布!

相关推荐

  1. 数据结构

    2023-12-17 10:50:05       54 阅读
  2. 数据结构-

    2023-12-17 10:50:05       21 阅读
  3. [数据结构]——

    2023-12-17 10:50:05       8 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-17 10:50:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-17 10:50:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-17 10:50:05       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-17 10:50:05       20 阅读

热门阅读

  1. 在Visual Studio中进行嵌入式ARM设备的调试

    2023-12-17 10:50:05       35 阅读
  2. Ubuntu下安装ONNX、ONNX-TensorRT、Protobuf和TensorRT

    2023-12-17 10:50:05       42 阅读
  3. 牛客小白月赛83

    2023-12-17 10:50:05       40 阅读
  4. C语言指针3

    2023-12-17 10:50:05       36 阅读
  5. 用单片机控制步进电机的程序

    2023-12-17 10:50:05       41 阅读
  6. ssh连接试图写入的管道不存在

    2023-12-17 10:50:05       58 阅读
  7. 146. LRU 缓存

    2023-12-17 10:50:05       50 阅读