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

猜你喜欢

转载自blog.csdn.net/demondhxq/article/details/79033925