zoukankan      html  css  js  c++  java
  • C++学习(三十六)(C语言部分)之 链表2

    测试代码笔记如下:

    #include<stdio.h>
    #include<stdlib.h>
    typedef struct node
    {
        int data;//数据
        struct node*pre;//前驱
        struct node*next;//后继
    }NODE,*PNODE;
    
    //申请一个结点
    PNODE creatNode(int data)//要修改内容   传地址
    {
        PNODE p = (NODE*)malloc(sizeof(NODE));
        p->data = data;
        p->pre = NULL;
        p->next = NULL;
        return p;
    }
    
    void  insert(PNODE head, int data)
    {
        PNODE p = creatNode(data);
        //插入的位置
    
        //头插  head->A->B  插入C
        p->next = head->next;//保留后面的结点C->next=B   //这一步必须最先写
        //后面三步可以换位置
        if (p->next!=NULL) p->next->pre = p;//让B->pre=C
        head->next = p;//A->next=C
        p->pre = head;//C->pre=A
        //中间插入
    }
    
    void deleNode(PNODE head, int data)
    {
        PNODE p = head->next;//第一个节点不存数据
        while (p != NULL)
        {
            if (p->data == data)
            {
                //找到位置
                p->pre->next = p->next;
                if(p->next!=NULL) p->next->pre = p->pre;
                free(p);
                break;//p已经释放  所以p不能再用于循环
            }
            p = p->next;
        }
    }
    
    void deleAllNode(PNODE head)
    {
        PNODE p = head;
        while (head)//判断head不等于NULL
        {
            p = head;
            head = head->next;
            free(p);//释放结点
        }
    }
    
    int main()
    {
        PNODE head;
        head = creatNode(0);//初始化
        //循环插入节点  
        //删除节点)
        getchar();
        return 0;
    }

    附:

  • 相关阅读:
    错题集知识(持续更新)
    Java 初始化过程
    java基础自定义测试异常类
    1049 数列的片段和 (20 分)
    1044 火星数字 (20 分)
    1048 数字加密(20分)
    js 全选反选和全不选
    robust programmings
    gdb define command
    好久没有破解别人的无线了, 重温一下
  • 原文地址:https://www.cnblogs.com/Yuuki-/p/10634433.html
Copyright © 2011-2022 走看看