注意:以下内容均省略思路,只有代码和时间复杂度。此内容为本人学习过程中的一些学习记录,如有错误,恳请各位指正、建议,末学将感激不尽!
目录
1.两个循环链表的合并
2.双向链表的结构定义
3.双向链表结构的对称性
4.双向链表的插入
5.双向链表的删除
1.两个循环链表的合并
linkList Connect(linkList Ta,linkList Tb)//Ta和Tb是两个尾指针
{
p=Ta->next;//标记头结点
Ta->next=Tb->next->next;//a表尾连b表头
free(Tb->next);//释放b头结点
Tb->next=p;
return Tb;
}
注意:这里的两个循环链表均带有尾指针
注意:这里的两个循环链表均带有尾指针
时间复杂度:O(1)
2.双向链表的结构定义
tpyedef struct DuLNode{
Elemtpye data;
struct DuLNode *prior,*next;
} DuLNode,*DulinkList;
3.双向链表结构的对称性
p->next->prior=p=p->prior->next
p->next->prior=p=p->prior->next
此性质是双向链表结构的特性,对于双向链表操作的表示与实现尤为重要哦!
4.双向链表的插入
Status DuListInsert(DulinkList L,int i,Elemtpye e)
{
int j=1;
DulinkList p;
p=L->next;
p->prior=L;
while(p&&i>j)
{
p=p->next;
j++;
}
if(!p||idata=e;
s->prior=p->prior;
p->prior->next=s;
p->prior=s;
s->next=p;
return OK;
}
注意:这是是在第i个元素之前插入
注意:这是是在第i个元素之前插入
时间复杂度:O(n)
5.双向链表的删除
Status DuListInsert(DulinkList &L,int i,Elemtpye &e)
{
int j=1;
DulinkList p;
p=L->next;
p->prior=L;
while(p&&i>j)
{
p=p->next;
j++;
}
if(!p||idata;
p->prior->next=p->next;
p->next->prior=p->prior;
free(p);
return OK;
}
时间复杂度:O(n)
对于C/C++语言中的&(引用符号)的说明与作用,我推荐大家通过以下内容了解:
C 语言笔记 —— 函数参数带 & 和不带 & 的区别
以上就是文章的全部内容了,针对以上内容我还会继续改进和完善,希望大家能多给我提一些建议哦!



