1.链表的种类

题中常考查以下两种:

上一讲我们学了无头单向非循环链表,这节,让我们看一下双向链表的操作吧~
2基本操作
1,定义双向链表

2,创建一个节点

3,初始化双链表

4,尾插一个节点

5打印双向链表

6尾删法

当然,在这个代码中,我们要考虑如果只有head的唯一一个节点,那我们可以检查一下,如果head->next==head,则就不尾删
代码实现:

7头插法

8 头删
void LTPopFront(LTNode* phead)
{assert(phead);assert(phead->next != head);LTNode* first = phead->next;LTNode* second = phead->next->next;phead->next = second;second->prev = phead;free(first);first = NULL;
}
9找到某个元素

10在pos位置前面插入
void LTInsert(LTNode* pos, LTDataType x)
{assert(pos);LTNode* posprev = pos->prev;LTNode* newnode = CreateLTNode(x);//posprev newnode posnewnode->next = pos;pos->prev = newnode;newnode->prev = posprev;posprev->next = newnode;
}
在这个代码中,如果pos是哨兵位,那么此代码相当于尾插
让我们画个图就理解了


11销毁双向链表

以上就是双向链表的知识点啦~
我们学完了顺序表和链表,为了方便学习,我们来比较一下两种表吧~

好啦~我们的知识分享就到这里了~