雙向鏈表基本結構
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;
}
}