诚城的成长 诚城的成长
首页
  • 高数基础
  • 数一

    • 高等数学
    • 线性代数
    • 概率论与数理统计
  • 820

    • 数据结构
    • 计算机操作系统
  • 英一

    • 单词
    • 语法
    • 阅读理解
    • 作文
  • 政治

    • 马克思主义基本原理
    • 毛泽东
    • 近代史
    • 思修
    • 时事
  • openpose
  • html5
  • css3
  • UI

    • Tailwind Css
    • Element-Plus
    • UniApp
  • 框架

    • Vue3
  • 拓展包

    • 包管理工具
    • 包开发
  • 开发语言

    • C语言
    • PHP
    • Phyton
  • 框架

    • Laravel
  • 会计

    • 初级经济法基础
    • 初级会计实务
  • 软考

    • 信息系统项目管理师
  • 博客

    • vitepress
    • vuepress
  • manim
  • git
  • vsCode
  • latex
  • docker
  • axios
  • vim
  • mac
  • Jetbrains

    • phpstorm
    • clion
突发奇想
GitHub (opens new window)

诚城

我有N个梦想……
首页
  • 高数基础
  • 数一

    • 高等数学
    • 线性代数
    • 概率论与数理统计
  • 820

    • 数据结构
    • 计算机操作系统
  • 英一

    • 单词
    • 语法
    • 阅读理解
    • 作文
  • 政治

    • 马克思主义基本原理
    • 毛泽东
    • 近代史
    • 思修
    • 时事
  • openpose
  • html5
  • css3
  • UI

    • Tailwind Css
    • Element-Plus
    • UniApp
  • 框架

    • Vue3
  • 拓展包

    • 包管理工具
    • 包开发
  • 开发语言

    • C语言
    • PHP
    • Phyton
  • 框架

    • Laravel
  • 会计

    • 初级经济法基础
    • 初级会计实务
  • 软考

    • 信息系统项目管理师
  • 博客

    • vitepress
    • vuepress
  • manim
  • git
  • vsCode
  • latex
  • docker
  • axios
  • vim
  • mac
  • Jetbrains

    • phpstorm
    • clion
突发奇想
GitHub (opens new window)
  • 绪论
  • 线性表

    • 顺序表基础知识
    • 顺序表 SqlList
    • 单链表 lNode
    • 双链表 dNode
      • 链表(链式存储)
      • 双链表
    • 循环链表
    • 静态链表
  • 栈队列数组

  • 串

  • 树

  • 查找
  • 排序
  • 图
  • 数据结构
  • 线性表
诚城
2022-01-06
目录

双链表 dNode原创

# 链表(链式存储)

使用链式存储的顺序表,称为链表。

# 双链表

『双链表』逻辑上相邻的两个元素物理上不一定相邻。也是线性表中的一种,使用链式存储。

::: detail

#include <stdio.h>
#include <stdlib.h>

#define ElementType int //宏 不能由';'结尾
// 使用别名 定义结构体
typedef struct DNode{
    ElementType data; // 存储数据类型
    struct DNode *prior,*next; // 前驱,后继指针
}DNode,*pDNode; // 指针别名, *pLNode 等价于 struct LNode *
// 初始化双链表
pDNode InitDNode(pDNode L){
    L=(pDNode)malloc(sizeof(DNode)); // 头结点
    L->prior=NULL;
    L->next=NULL;
    L->data=0;
}
// 是否为空
bool isEmpty(pDNode L){
    if(L->next ==NULL && L->prior==NULL){
        return true;
    }else{
        return false;
    }
}
// 头插法
pDNode headCreate(pDNode &L,ElementType e){
    pDNode temp;
    temp=(pDNode) malloc(sizeof(DNode));
    temp->data=e;
    temp->next = L->next;
    if(L->next != NULL){
        L->next->prior = temp;// 插入位置的后一个结点的前驱指向新结点
    }
    temp->prior = L; // 新结点前驱指向头指针
    L->next = temp; // 头结点后继指向新结点
    L->data++;
}
// 打印 双链表
void printDNode(pDNode L){
    if(isEmpty(L)){
        printf("链表为空!\n");
    }else{
        printf("链表数据为!\n");
        for (int i = 0; i < L->data; ++i) {
            printf("%4d",L->next->data);
            L=L->next;
        }
        printf("\n");
    }
}
// 尾插法
pDNode tailCreate(pDNode &L,ElementType e){
    pDNode temp;
    temp=(pDNode) malloc(sizeof(DNode));
    temp->data=e;
    temp->next = L->next;
    L->next = temp;
    L->data++;
}
int main() {
    int x;
    printf("链表为空!\n");
    return 0;
}

:::

上次更新: 2022/06/30, 14:46:07
单链表 lNode
循环链表

← 单链表 lNode 循环链表→

Theme by Vdoing | Copyright © 2022-2022 carveybunt | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×
×

特别申明:

本站所有内容均为个人理解或转载,如有不当之处,敬请大佬指导!