C语言双向链表

双向链表基本结构

typedef struct pNode
{
    int data;//自己可以定义的私有数据
    struct pNode *pre;//链表前一个节点
    struct pNode *next;//链表后一个节点
}pNode;

创建一个双向链表,并打印出链表中存储的数据

#include<stdio.h>
#include<malloc.h>//包含malloc函数
void main()
{
    /*定义一个双向链表的结构*/
    typedef struct pNode
    {
        int data;//自己可以定义的私有数据
        struct pNode *pre;//链表前一个节点
        struct pNode *next;//链表后一个节点
    }pNode;

    /*第一个节点head*/
    pNode *head=malloc(sizeof(pNode));
    head->data=0;
    head->pre=NULL;
    head->next=NULL;

    /*定义一个链表*/
    pNode *node;

    int i;
    for(i=1;i<10;i++)
    {
        /*每次循环都分配一个新的节点作为尾节点*/
        pNode *tail=malloc(sizeof(pNode));
        tail->data=i;
        tail->pre=NULL;
        tail->next=NULL;

        /*把node作为插入到head和tail之间的节点,需要建立起node和head之间的关系*/
        node=tail;
        node->pre=head;
        head->next=node;

        /*之后每次循环都把当前节点作为head新建立的节点作为node 重复之前的步骤*/
        head=node;
    }
    /*结束循环,建立了一个链表node*/
    while(1)
    {
        if(NULL==node->pre)
        {
            break;
        }
        printf("node->data=%x\n",node->data);
        node=node->pre;
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值