嵌入式学习-数据结构-Day5
一、思维导图
二、作业
1.双向循环链表尾插
//尾插
DoubleLink insert_rear(DoubleLink head,datatype element)
{
DoubleLink s=Create_Node(head);//创建节点
s->data=element;
if(NULL==s)
return NULL;
if(head==NULL) //一个节点
head=s;
else //多个节点
{
DoubleLink p=head->pirv; //找最后一个节点
p->next=s;
s->pirv=p;
s->next=head;
head->pirv=s;
}
return head;
}
运行结果
2.双向循环链表头删
//头删
DoubleLink del_head(DoubleLink head)
{
if(NULL==head)
return head;
if(head->next==head) //一个节点
{free(head);head=NULL;return head;}
DoubleLink del=head; //多个节点时
DoubleLink p=head->pirv
head=head->next;
p->next=head;
head->pirv=p; //首尾相连
free(del);
del=NULL;
return head;
}
运行结果
3.双向循环链表尾删
//尾删
DoubleLink del_rear(DoubleLink head)
{
if(NULL==head)
return NULL;
if(head->next==head) //只有一个节点
{free(head);head=NULL;return head;}
DoubleLink p=head-pirv; //多个节点,找到最后一个
p->pirv->next=head;
head->pirv=p->pirv; //首尾相连
free(p);
p=NULL;
return head;
}
运行结果