- 整理思维导图
- 整理课上单向循环链表的代码
- 完成双向链表的剩下四个功能
1.
3.
//5.头插
void dele_head(double_p H)
{
if(H==NULL)
{
printf("入参为空,请检查\n");
return;
}
if(empty_double(H))
{
printf("表为空,无需删除\n");
return;
}
double_p dele=H->next;
H->next->pri=dele;
H->next=dele->next;
if(H->next!=NULL)
dele->next->pri=H;
free(dele);
H->len--;
}
//6.尾插
void insert_tail(double_p H,datatype data)
{
if(H==NULL)
{
printf("入参为空,请检查\n");
return;
}
double_p new=create_node(data);
p->next=new;
new->pri=p;
new->next=NULL;
H->len++;
}
//7.按位置插入
void insert_pos(double_p H,datatype data,int pos)
{
if(H==NULL)
{
printf("入参为空,请检查\n");
return;
}
if(pos<1||pos>H->len+1)
{
printf("位置不合理\n");
return;
}
double_p p=H;
for(int i=0;i<pos-1;i++)
{
p=p->next;
}
double_p new=create_node(data);
new->next=p->next;
if(p->next!=NULL)
p->next->pri=new;
new->pri=p;
p->next=new;
H->len++;
}
//8.按位置删除
void dele_pos(double_p H,int pos)
{
if(H==NULL)
{
printf("入参为空,请检查\n");
return;
}
if(empty_double(H))
{
printf("表为空,无需删除\n");
return;
}
if(pos<1||pos>H->len+1)
{
printf("位置不合理\n");
return;
}
double_p dele=p->next;
p->next->pri=dele;
p->next=dele->next;
if(p->next!=NULL)
dele->next->pri=p;
free(dele);
H->len--;
}