zoukankan      html  css  js  c++  java
  • 双向链表(C语言)

    双向链表(C语言)

      一:初始化以及创建:

    struct Node {
        int data;
        Node* prior;
        Node* next;
    };
    
    int Init(Node* L) {//初始化
        Node* temp = (Node*)malloc(sizeof(Node));
        if (!L)
            return  -1;
        L->prior = NULL;//前面是指针引进,所以不需要使用指针符号来指向
        L->next = NULL;
    }
    
    int CreateNewData(Node* L) {//创建新表
        int n;
        Node* p = L;
        printf("请输入你要输入的个数
    ");
        scanf("%d", &n);
    
        for (int i = 1; i <= n; i++) {
            Node* q = (Node*)malloc(sizeof(Node));
            p->next = q;
            printf("请输入第%d个元素的值", i);
            scanf("%d", &q->data);
    
            q->prior = p;//主要元素仍然是p,而p也只是暂时存在为内存地址分配对应的值的
            q->next = NULL;
            p = q;
        }
        return 0;
    }

      二:插入以及删除操作

    int InsertData(Node* L, int num, int elem) {
        Node* p, * q;
        int i;
        p = L;
        for (int i = 1; i < num; i++) {
            p = p->next;
        }
        q = (Node*)malloc(sizeof(Node));
        if (q) {//这里需要好好琢磨一下,比较难理解的
            q->data = elem;
            p->next->prior = q;
            q->next = p->next;
            p->next = q;
            q->prior = p;
        }
        return 0;
    }
    
    int DeleData(Node* L, int num) {
        Node* p, * q;
        //需要的就是把需要删除的位置跳过去就可以了,同时释放那个内存所占用的空间
        p = L->next;
        q = L;
        for (int i = 1; i < num; i++) {
            p = p->next;
            q = q->next;
        }
        p->next->prior = q;
        q->next = p->next;
        free(p);
        return 0;
    }

      附加图示理解:

      三:双向链表遍历:

    void print(Node *L)    {//输出双向链表的所有的元素
        Node *p;
        p=L->next;
    
        while(p!=NULL)
        {
            printf("%d ",p->data);
            p=p->next;
        }
    }
  • 相关阅读:
    MySql学习20----数据库范式
    MySql学习17----数据库事务(01)
    MySql学习19-----用户管理
    MySql学习18----数据库事务---命令使用(02)
    MySql学习16----查看mysql库大小、表大小、索引大小
    MySql学习13----触发器
    MySql学习15----MySql日志
    java公开课-04-log4j
    java公开课-04-异常
    java公开课-03-内部类
  • 原文地址:https://www.cnblogs.com/instead-everyone/p/13700308.html
Copyright © 2011-2022 走看看