📄 dlnkinix.c
字号:
/*****************************************************/
/* 在双链表中第i个结点后插入一个值为x的新结点 */
/* 文件名dlnkinix.c,函数名insert_x_after_i() */
/*****************************************************/
dnode *insert_x_after_i(dnode *head,datatype x,int i)
{
dnode *p,*q;
p=(dnode*)malloc(sizeof(dnode));/*分配空间*/
p->info=x;/*设置新结点的值*/
if(i==0)/*在最前面插入一个值为x的新结点*/
{
p->llink=NULL;/*新插入的结点没有前驱*/
p->rlink=head;/*新插入的结点的后继是原来双链表中的第一个结点*/
head=p;/*新结点成为双链表的第一个结点*/
return head;
}
q=find_pos_dlink_list(head,i);/*查找第i个结点*/
if(!q)/*第i个结点不存在*/
{printf("第%d个结点不存在,无法进行插入",i);return head;}
if(q->rlink==NULL)/*在最后一个结点后插入*/
{
p->rlink=q->rlink;/*即为NULL,新插入的结点没有后继。插入操作(1)*/
p->llink=q;/*插入操作(2)*/
q->rlink=p;/*插入操作(4)*/
}/*注意不能和下面的一般情况一样处理,这里如执行下面的(3)将出错!*/
else/*一般情况下的插入*/
{
p->rlink=q->rlink;/*插入操作(1)*/
p->llink=q;/*插入操作(2)*/
q->rlink->llink=p;/*插入操作(3)*/
q->rlink=p;/*插入操作(4)*/
}
return head;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -