双向链表基本结构
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;
}
}