单链表习题整理(三)

题目

试写一算法,在无头结点的动态单链表上实现线性表操作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;
}

你可能感兴趣的:(数据结构,单链表,动态插入)