赞
踩
双向循环链表是最优链表,能补齐单链表的缺点,是个结构复杂,操作简单的链表。其插入和删除节点的时间复杂度是O(1)。
和单链表不同的是双向链表有两个指针,一个指向下一个节点,一个指向上一个节点
- typedef int LTDataType;
- typedef struct ListNode
- {
- LTDataType _data;
- struct ListNode* _next;
- struct ListNode* _prev;
- }ListNode;
PS:一般建立此链表,要使用哨兵位来简化操作,链表的哨兵位的_pre指向尾节点,尾结点是_next指向哨兵位。
因为此链表尾结点没有置空,所以无法判断尾结点。但是因为其哨兵位不存数据,所以可以判断节点是否为哨兵位来退出循环。
- void ListPrint(ListNode* pHead)
- {
- assert(pHead);
-
- ListNode* cur = pHead->_next; //这里传入哨兵位的下一个
- while (cur!=pHead) {
- printf("%d ->
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。