顺序表

2228-创建顺序表

请写一个创建顺序表的函数List * CreateList(int len);其中len为创建的顺序表时始化分配的空间单元数,返回值为表指针。

请注意,本题有预置代码,只需提交创建顺序表函数即可。

List *CreateList(int len)                               {                                                       List *L=(List *)malloc(sizeof(List));                  L->length=0;                                           L->capacity=len;                                       L->Array=(ElemType *)malloc(len*sizeof(List));         return L;                                              }    

该函数按顺序表中的顺序输出顺序表中所有的元素,每个数后面一个空格,最后一个换行符。

void printList(List *L)
{
int i;
for(i=0;i<L->length;i++)
{
printf("%d ",L->Array[i]);
}
printf("\n");
}      


2230-顺序表元素个数

请设计int ListLength(List *L)函数,其功能为返回顺序表中元素个数。

int ListLength(List *L)
{ int i,make=0;
for(i=0;i<L->length;i++)
{
make++;
}
return make;
}

                                           

2246-顺序表判空

问题描述:设计bool IsEmpty(List *L)函数,其判断顺序表是否为空,为空返回true,否则返回false。

bool IsEmpty(List *L)
{
   int i,count=0;
   for(i=0;i<L->length;i++)
  {
      count++;
   }
   if(count==0)
     return true;
   else
     return false;
}

2247-清空顺序表

设计void EmptyList(List *L)函数,清空顺序表中的所有元素。

void EmptyList(List *L)
{
	int a;
	for(a=0;a<L->length;a++)
	{
		L->Array[a]=NULL;
	}
	L->length=0;            /*使长度为零则顺序表置空*/
}

2248-获得顺序表数据

完成ElemType* GetElem(List *L,int k)函数,获得顺序表中第k个元素(从0开始计数)的数据指针,如果k不在范围内,则返回空指针。

ElemType* GetElem(List *L,int k)
{
	int i;
	if(k<0||k>=L->length)
	return NULL;
	for(i=0;i<L->length;i++)
	{
		if(i==k)
		return &L->Array[i];  /*返回数据指针*/

	}
}

2249-顺序表插入数据

完成void insertElem(List *L,int k,ElemType e)函数,在顺序表中第k个位置(从0开始计数)插入数据e,如果k不在范围内,则什么都不做。如果顺序表已满,则把顺序表空间扩展为现有空间的2倍后再插入。

void insertElem(List *L,int k,ElemType e)
{
  if(0>k||L->length<k);
     if(L->length==L->capacity)   /*若顺序表已满*/
     {
       L->Array=(ElemType*)realloc(L->Array,2*L->capacity*sizeof(ElemType));   /*顺序表空间扩展为现有空间的2倍*/
         if(NULL==L->Array);
         else
         L->capacity*=2;
     }
     for(int i=L->length;i>k;--i)
  L->Array[i]=L->Array[i-1];
  L->Array[k]=e;
  L->length++;
}

    
    

2250-顺序表删除数据

完成void deleteElem(List *L,int k);函数,删除顺序表中第k个元素(从0开始计数),如果k不在范围内,则什么也不做

void deleteElem(List *L,int k)
{
	int i;
	if((k<0)||(k>L->length-1));  /*k不在范围内,什么都不做*/
	else
	{for(i=k;i<L->length;i++)
	{
		L->Array[i]=L->Array[i+1];
	}
	L->length--;                /*删掉一个元素后,长度减一*/
	}
}


2251-有序顺序表合并

完成void MergeList(List *LC,List *LA,List *LB)函数,将两个有序(从小到大)的顺序表LA和LB合并到LC中,已知初始LC为空表(空间已经分配好,并且空间足够大,即你不用担心空间不够)

void MergeList(List *LC,List *LA,List *LB)
{
	int i,j,k,l;
	i=0;j=0;k=0;
	while(i<LA->length&&j<LB->length)
    {
    	
     if(LA->Array[i]<=LB->Array[j])
     {
     	LC->Array[k]=LA->Array[i];
     	i++;k++;
     }
	else{
		LC->Array[k]=LB->Array[j];
		j++;k++;
	}}
	while(i<LA->length)
	{
		LC->Array[k]=LA->Array[i];
		i++;k++;
	}
	while(j<LB->length)
	{
		LC->Array[k]=LB->Array[j];
		j++;k++;
	}
	LC->length=LA->length+LB->length; 
}



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值