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;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章