【数据结构】顺序表的实现

源代码

typedef  struct
{   
    ElemType  list[MaxSize];    
    int  size;
} SequenceList; 
/* MaxSize表示数组的最大元素个数,list表示顺序表的数组名,size表示顺序表中当前存储的数据元素个数,它必须满足size≤ MaxSize, SequenceList是该结构体的名字。*/


void  ListInitialize (SequenceList *L)  /*初始化顺序表L*/
{
	        L->size = 0;	/*定义初始数据元素个数*/
}


 int  ListInsert (SequenceList *L, int i, ElemType x)
/*在顺序表L的位置i(0 ≤ i ≤ size)前插入数据元素值x,插入成功返回1,插入失败返回0*/
{	
	int j;
	if(L->size >= MaxSize)
   {
		printf("顺序表已满无法插入! \n");
		return 0;
	}
	else if(i < 0 || i > L->size )
   {    
           printf("参数i不合法! \n");
		 return 0;
	}
else
     {    
             for(j = L->size; j > i; j--)      /*为插入做准备*/
                      L->list[j] = L->list[j-1];	
		  L->list[i] = x;	            	    /*插入*/
		  L->size ++;		/*元素个数加1*/
		   return 1;
	   }
}


 int  ListDelete (SequenceList *L, int i, ElemType *x)	
/*删除顺序表L中位置i(0 ≤ i ≤ size - 1)的数据元素并存放到参数x中*/
/*删除成功返回1,删除失败返回0*/
{	
	int j;
	if(L->size <= 0)
	{	
		printf("顺序表已空无数据元素可删! \n");
		return 0;
	}
	else if(i < 0 || i > L->size-1)
    {	
             printf("参数i不合法");
	        return 0;
    }
      else
	  {	
              *x = L->list[i];                         /*保存删除的元素到参数x中*/
		     for(j = i +1; j <= L->size-1; j++) 
                     L->list[j-1] = L->list[j];	               /*依次前移*/
		       L->size--;	                          /*数据元素个数减1*/
		       return 1;
	  }
}


int  ListLength (SequenceList  L)    /*返回顺序表L的当前数据元素个数*/
{
	         return L.size;
}


int  ListGet (SequenceList L, int i, ElemType *x)
/*取顺序表L中第i个数据元素的值存于x中,成功则返回1,失败返回0*/
{
	 if(i < 0 || i > L.size-1)
	 {
	        printf("参数i不合法! \n");
	        return 0;
	  }
	  else
	  {	
              *x = L.list[i];
		  return 1;
	  }
}










  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值