题目
试写一算法,在无头结点的动态单链表上实现线性表操作INSERT(L, i, b),并和在带头结点的动态单链表上实现相同操作的算法进行比较。
思想
这个题目非常简单,关键在于是否注意到无头结点,无头结点的动态单链表插入在1位置区分一下,其他都是循环找到前一个结点,用q指向,然后插入 p->next=q->next;
q->next=p;
代码
Status T217(LinkList *L,int i,LElemTyoe_L b)
{
LinkList p,q;
int count;
p=(LinkList)malloc(sizeof(LNode));
if(!p)
exit(OVERFLOW);
p->data=b;
if(i>0)
{
if(i=1)
{
p->next=*L;
*L=p
return OK;
}
else
{
if(*L)
{
count=1;
q=*L;
while(count<i-1&&q)
{
count++;
q=q->next;
}
if(q)
{
p->next=q->next;
q->next=p;
return OK;
}//if#
}//if#
}//else#
}//if#
return ERROR;
}