双向链表既可以从头向尾遍历,也可以从尾向头遍历。
因此双向链表中不仅有下一个节点的地址还有上一个节点的地址。
创建方法如下:
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int nval;
struct node* plast;
struct node* pnext;
}list;
addnode(list** pphead, list** ppend, int nval)
{
list* ptemp = malloc(sizeof(list));
ptemp->nval = nval;
ptemp->plast = NULL;
ptemp->pnext = NULL;
if (*pphead == NULL)
{
*pphead = ptemp;
}
else
{
(*ppend)->pnext = ptemp;
ptemp->plast = *ppend;
}
*ppend = ptemp;
}
int main()
{
list* phead = NULL;
list* pend = NULL;
addnode(&phead, &pend, 1);
addnode(&phead, &pend, 2);
addnode(&phead, &pend, 3);
addnode(&phead, &pend, 4);
return 0;
}