已知一顺序表A,其元素按非递减有序排,编一函数插入一个元素X后仍保持非递减。

我只知道用链表结构 和指针来编写 谁能帮帮忙啊
2024-12-16 14:00:34
推荐回答(1个)
回答1:

先找到插入元素X位置用for循环实现,元素比较被插结点值最小,应插入第一结点之前。这种情况下使head指向被插结点,被插结点的指针域指向原来的第一结点则可。即:

pi->next=pb;
head=pi;

在其它位置插入。这种情况下,使插入位置的前一结点的指针域指向被插结点,使被插结点的指针域指向插入位置的后一结点。即为:pi->next=pb;pf->next=pi;

在表末插入。这种情况下使原表末结点指针域指向被插结点,被插结点指针域置为NULL。即:

pb->next=pi;
pi->next=NULL; TYPE * insert(TYPE * head,TYPE *pi)
{
TYPE *pf,*pb;
pb=head;
if(head==NULL) /*空表插入*/
(head=pi;
pi->next=NULL;}
else
{
while((pi->num>pb->num)&&(pb->next!=NULL))
{
pf=pb;
pb=pb->next;
}/*找插入位置*/
if(pi->num<=pb->num)
{
if(head==pb)head=pi;/*在第一结点之前插入*/
else pf->next=pi;/*在其它位置插入*/
pi->next=pb; }
else
{
pb->next=pi;
pi->next=NULL;
} /*在表末插入*/
}
return head;
}