欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

线性表之顺序表基本操作实现

程序员文章站 2024-03-20 14:47:04
...

最近给一个小同学上C语言的课,就顺便自己再把基础知识复习一下,争取每天都写一点。

 Stautus  GetElem (sqlist L, int i, Stautus *e)
{
	if (L.length ==0||i<1||i>L.length )
		return ERROR;
    *e=L.data[i-1];
	return OK;
}
///插入操作;
 Stautus ListInsert(sqlist* L,int i ,Stautus e)//i表示要删除的位置
 {
	 if(L->length ==MAXSIZE)
	 {
		 return ERROR;
	 }
	 if(i>(*L).length+1||i<1)
	 {
		 return ERROR;
	 }
	 if(i<=L->length )
	 {
		 for(int k= L->length -1;k>=i-1;k--)
		 { L->data [k+1]=L->data[k];}
	 }
	 L->data [i-1]=e;
	 L->length ++;
	 return OK;
 }
 
Stautus ListDelete (sqlist * L,int i,int *e)
{
	if (L->length ==0)
		return ERROR;
	if(i>L->length ||i<1)
		return ERROR;
    *e=L->data[i-1]; 
	if(i<L->length -1)
	{
		for(int k=i-1;k<L->length ;k++)
			L->data[k]=L->data[k+1];
	}
	L->length --;
	return OK;
}

  注意在插入和删除操作中,最后一个元素的处理,他的删除或者插入不需要移动其他的元素。最好情况是在末尾,时间复杂读是O(1)最坏情况是O(n),即在最前端,因此根据等概率计算,平均复杂度为O (n);

转载于:https://www.cnblogs.com/gisorlee/archive/2012/11/26/2790050.html