总述
前面实现了一个单链表,现在我们再来做一个双向链表吧!
(附上单链表描述:http://blog.csdn.net/lliangw/article/details/50914976)
概述
和单链表差别非常小,只是多了一个指针指向前一个元素。
这样就更像我们生活中的链条了。
实现
依然附上结构体
typedef struct LNode
{
int num; //学号
char name[20]; //姓名
int score; //得分
LNode *prior; //指向上一个链的指针
LNode *next; //指向下一个链的指针
}LNode,*LinkList; //LNode是类型名,LinkList是指向LNode类型的指针
插入及删除
特别说一下插入和删除
具体的我就不解释了,按照图示理解吧。
int ListInsert_L(LinkList &t, LNode e)
{
LinkList E=(LinkList)malloc(sizeof(LNode));
*E=e;
E->next=t->next;
t->next = E;
E->next->prior = E;
E->prior =t;
return 0;
}
int ListDelete_L(LinkList p)
{
p->prior->next = p->next ;
p->next->prior = p->prior;
free(p);
return 0;
}
其余的操作
建立链表
无非是两个指针的初始化。
销毁链表、链表测长
和单链表的销毁并没有什么区别。
总结
双向链表实际上难度并不大,而且更具有灵活性。
声明
如果文章中有错误,欢迎指出,我会及时改正!
此文章为原创,如需转载,请注明转载地址!
http://blog.csdn.net/lliangw