数据结构基础:双链表结构、实现

继续和颦颦学C语言呀.......>


双链表的结构

9f027f5396d04a2b97bd64c11f7b9f34.png

 这里的head 为头节点,是‘哨兵位’,实际不存储任何有效的数据

它的存在是为了遍历环链表避免死循环

双链表的实现

typedef int LTDataType;
typedef struct ListNode
{
struct ListNode* next; //指针保存下⼀个节点的地址
struct ListNode* prev; //指针保存前⼀个节点的地址
LTDataType data;
}LTNode;

头插

DLinkList HeadInsert(DLinkList &L)
{
    InitList(L); 
    int x;
    cin>>x;
    while(x!=9999)
    {
        LTNode *s = (LTNode *)malloc(sizeof(LTNode));
        s->data = x;
        if(L->next == NULL)
        {
            s->next = NULL;
            s->pre = L;
            L->next = s;
        }
        else
        {
            s->next = L->next;
            L->next->pre = s;
            s->pe = L;
            L->next = s;
        }
        cin>>x;
    }
    return L;
}

尾插 

DLinkList TailInsert(DLinkList &L)
{
    InitList(L);
    LTNode *s,*r=L;
    int x;
    cin>>x;
    while(x!=9999)
    {
        s = (LTNode *)malloc(sizeof(LTNode));
        s->data = x;
        s->next = NULL;
        s->pre = r;
        r->next = s;
        r = s;
        cin>>x;
    }
    return L;
}

遍历双链表

void PrintList(DLinkList L)
{
    DNode *p = L->next;
    while(p){
        cout<<p->data<<" ";
        p = p->next;
    }
    cout<<endl;
}

 查找

void Delete(DLinkList &L, int i)
{
    if(i<1 || i>Length(L))
    {
        cout<<"delete failed: index is wrong."<<endl;
        return;
    }
    LDNode *p = GetElem(L,i-1);
    LDNode *q = p->next;
    p->next = q->next; 
    q->next->pre = p; 
    free(q);
}

 

 代码需要大家自己多打打才会印象深刻哦加油

 

 

相关推荐

  1. 数据结构

    2024-04-07 21:22:01       54 阅读
  2. 数据结构-

    2024-04-07 21:22:01       21 阅读
  3. [数据结构]——

    2024-04-07 21:22:01       8 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-07 21:22:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-07 21:22:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-07 21:22:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-07 21:22:01       20 阅读

热门阅读

  1. Glide系列-自定义ModuleLoader

    2024-04-07 21:22:01       14 阅读
  2. Chrome 浏览器无法保存或自动填充密码

    2024-04-07 21:22:01       14 阅读
  3. 三道题搞懂子树问题

    2024-04-07 21:22:01       14 阅读
  4. 整个项目吧(尚医通)

    2024-04-07 21:22:01       15 阅读
  5. 使用iPhone/安卓手机代替门禁卡

    2024-04-07 21:22:01       60 阅读
  6. 干了三年外包。。。忘了什么是CICD。。。

    2024-04-07 21:22:01       15 阅读
  7. Mongodb 入门

    2024-04-07 21:22:01       23 阅读
  8. Windows SDK(五)按钮静态文本与编辑框控件

    2024-04-07 21:22:01       25 阅读