尾插法创建单链表(顺序建表)

1、问题描述
  请写出尾插法创建单链表的伪代码。

2、算法原理
  (1)首先,创建头结点L尾指针r
  (2)接着,使用for循环依次向表中插入新结点,并同时移动尾指针r
    该算法的时间复杂度为:O(n)

3、插入操作详解
尾插法创建单链表(顺序建表)_第1张图片

4、算法伪代码

Status createLinkListTail(LinkList &L,int n)  //n为需要插入的结点个数; 
{
	L=(LinkList)malloc(sizeof(LNode));        //为头结点申请内存空间; 
	if(L==NULL)                               //申请内存空间失败!!! 
		return OVERFLOW;                       
	L->next=NULL;
	r=L;                                       //r为表尾元素指针; 
	for(int i=n;i>0;i--)                       //开始插入结点操作; 
	{
		p=(LinkList)malloc(sizeof(LNode));     //为要插入的新结点申请内存空间; 
		if(p==NULL)                            //申请内存空间失败; 
			return OVERFLOW;
		scanf(&p->data);                       //为新结点p的data域赋值; 
		p->next=L->next;                       //为新结点p的next域赋值;
		r->next=p;                             //把新结点p链入表尾; 
		r=p;                                   //让表尾指针r指向新的表尾结点p,为下次插入结点做准备; 
	} 
	return OK;
}   //createLinkListTail 

至此,用尾插法建表的讲解完毕!!!

  结语:以上就是我对这个问题的理解、解法,可能存在着更好、更简洁的解法代码,希望大家提出来,我们一起讨论,交换看法,共同进步。若上述代码中存在问题,望大家指正,谢谢大家看到结尾。(∩^∩)

奋斗的2351

你可能感兴趣的:(数据结构考研复习笔记)