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; }
2229-输出顺序表
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; }