删除L的第i个数据元素,并用e返回其值,L的长度减1 10
在最后补充intListDelete(sqList*L,inti,inte)函数#include<stdio.h>#include<stdlib.h>#defineLIS...
在最后补充int ListDelete(sqList *L,int i,int e)函数
#include<stdio.h>
#include<stdlib.h>
#define LIST_INIT_SIZE 10
#define LIST_INCREMENT 10
typedef struct sqList
{
int *elem;//存储空间基址
int length;//当前长度(已有元素的个数)
int listsize;//当前分配的存储容量(以sizeof(ElemType)为单位)
}sqList;
void InitList(sqList *);
void Display(sqList );
int LocateElem(sqList L,int e);
int ListInsert(sqList *L, int i,int e);
int ListDelete(sqList *L,int i,int e);
void main()
{
sqList sql1;
InitList(&sql1);
printf("请输入sql1的值!\n");
for(int i=0;i<sql1.listsize-5;i++)
{
scanf("%d",&sql1.elem[i]);
sql1.length++;
}
Display(sql1);
ListInsert(&sql1,3,3);
Display(sql1);
//添加删除函数
}
void InitList(sqList* L)
{
L->elem=(int*)malloc(LIST_INIT_SIZE*sizeof(int));
if(!L->elem)
exit(-1);
L->length=0;
L->listsize=LIST_INIT_SIZE;
}
void Display(sqList L)
{
int i=0;
while(i<L.length)
{
printf("%d\t",L.elem[i]);
i++;
}
printf("\n");
}
//初始条件:线性表L已经存在,1<=i<=ListLength(L)+1
//操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1
int ListInsert(sqList *L,int i,int e)
{
int *newbase,*q,*p;
if(i<1||i>L->length+1)//i值不合法
return 0;
if(L->length>=L->listsize)//当前存储空间已满,增加分配
{
if(!(newbase=(int*)realloc(L->elem,(L->listsize+LIST_INCREMENT)*sizeof(int))))
exit(-1);//存储分配失败
L->elem=newbase;//新基址
L->listsize+=LIST_INCREMENT;//增加存储容量
}
q=L->elem+i-1;//指向要插入的位置
for(p=L->elem+L->length-1;p>=q;--p)//p指向最后一个元素得位置
*(p+1)=*p;//往后挪动,挪动了L.length-i+1次
*q=e;//插入e
++L->length;
return 1;
}
/*--------------------------------------------------------------------------
操作结果:删除L的第i个数据元素,并用e返回其值,L的长度减1
---------------------------------------------------------------------------
int ListDelete(sqList *L,int i,int e)
{
}*/ 展开
#include<stdio.h>
#include<stdlib.h>
#define LIST_INIT_SIZE 10
#define LIST_INCREMENT 10
typedef struct sqList
{
int *elem;//存储空间基址
int length;//当前长度(已有元素的个数)
int listsize;//当前分配的存储容量(以sizeof(ElemType)为单位)
}sqList;
void InitList(sqList *);
void Display(sqList );
int LocateElem(sqList L,int e);
int ListInsert(sqList *L, int i,int e);
int ListDelete(sqList *L,int i,int e);
void main()
{
sqList sql1;
InitList(&sql1);
printf("请输入sql1的值!\n");
for(int i=0;i<sql1.listsize-5;i++)
{
scanf("%d",&sql1.elem[i]);
sql1.length++;
}
Display(sql1);
ListInsert(&sql1,3,3);
Display(sql1);
//添加删除函数
}
void InitList(sqList* L)
{
L->elem=(int*)malloc(LIST_INIT_SIZE*sizeof(int));
if(!L->elem)
exit(-1);
L->length=0;
L->listsize=LIST_INIT_SIZE;
}
void Display(sqList L)
{
int i=0;
while(i<L.length)
{
printf("%d\t",L.elem[i]);
i++;
}
printf("\n");
}
//初始条件:线性表L已经存在,1<=i<=ListLength(L)+1
//操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1
int ListInsert(sqList *L,int i,int e)
{
int *newbase,*q,*p;
if(i<1||i>L->length+1)//i值不合法
return 0;
if(L->length>=L->listsize)//当前存储空间已满,增加分配
{
if(!(newbase=(int*)realloc(L->elem,(L->listsize+LIST_INCREMENT)*sizeof(int))))
exit(-1);//存储分配失败
L->elem=newbase;//新基址
L->listsize+=LIST_INCREMENT;//增加存储容量
}
q=L->elem+i-1;//指向要插入的位置
for(p=L->elem+L->length-1;p>=q;--p)//p指向最后一个元素得位置
*(p+1)=*p;//往后挪动,挪动了L.length-i+1次
*q=e;//插入e
++L->length;
return 1;
}
/*--------------------------------------------------------------------------
操作结果:删除L的第i个数据元素,并用e返回其值,L的长度减1
---------------------------------------------------------------------------
int ListDelete(sqList *L,int i,int e)
{
}*/ 展开
4个回答
展开全部
a4
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我想知道你怎么用e返回其值啊?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
awdAWdawfrawffAFwAWf
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询