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销毁双向链表
以上就是双向链表的知识点啦~
我们学完了顺序表和链表,为了方便学习,我们来比较一下两种表吧~
好啦~我们的知识分享就到这里了~