当前位置: 移动技术网 > IT编程>开发语言>C/C++ > C++学习(三十六)(C语言部分)之 链表2

C++学习(三十六)(C语言部分)之 链表2

2019年04月02日  | 移动技术网IT编程  | 我要评论

黑龙江建筑职业技术学院分数线,全屏截图快捷键,弗朗西斯卡·帕斯卡尔

 

 

测试代码笔记如下:

#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;
}

附:

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网