编写一个c语言程序实现以下功能: 20

1,创建一个线性表并对其初始化。2,向其中输入数据。3,向指定位置插入数指定数据4,删除指定位置的数据... 1,创建一个线性表并对其初始化。2,向其中输入数据。3,向指定位置插入数指定数据

4,删除指定位置的数据
展开
 我来答
920020234
推荐于2016-03-04 · TA获得超过2.4万个赞
知道大有可为答主
回答量:1.2万
采纳率:0%
帮助的人:2190万
展开全部
根据你的要求,只要将以下代码写入程序即可实现你说的功能,具体如下:

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

#define LIST_INIT_SIZE 20
#define LISTINCREMENT 10

struct myList
{
int elem;
int length;
int listsize;
};
int InitList(myList&L)
{
L.elem=(int*)malloc(LIST_INIT_SIZE*sizeof(int));
if(!L.elem)
{
exit(0);
}
L.length=0;
L.listsize=LIST_INIT_SIZE;
return 1;
}
int ListInsert(myList &L,int i,int x)
{
int *newbase,*p,*q;
if(i<1||i>L.length-1)
{
return -1;
}
if(L.length>=L.listsize)
{
if(!(newbase=(int*)realloc(L.elem,(LIST_INIT_SIZE+LISTINCREMENT)*sizeof(int))))
exit(0);
L.elem=newbase;
L.listsize+=LISTINCREMENT;
}
p=L.elem+i;
for(q=L.elem+L.length-1;q<=p;--q)
{
*(q+1)=*q;
}
*p=x;
++L.length;
return 1;
}
int ListDelete(myList &L,int i)
{
int *newbase,*p,*q;
if(i<1||i>L.length-1)
{
return -1;
}
if(L.length<1)
{
return -1;
}
p=L.elem+i;
for(q=p;q<=L.elem+L.length-1;++q)
{
*q=*(q+1);
}
--L.length;
return 1;
}
int main(void)
{
int n,i,x;
SqList L;
InitList(L);
printf("请输入线性表L的长度:\n");
scanf("%d",&n);
printf("请输入数据:\n");
for(i=0;i<n;i++)
{
scanf("%d",&L.elem[i]);
}
printf("顺序表的元素有:\n");
for(i=0;i<n;i++)
{
printf("%d ",L.elem[i]);
}
printf("\n");
printf("请输入插入位置i:\n");
scanf("%d",&i);
ListInsert(L,i,4);
printf("插入后的线形表:\n");
for(i=0;i<=n;i++)
{
printf("%d ",L.elem[i]);
}
printf("请输入删除位置i:\n");
scanf("%d",&i);
ListInsert(L,i);
printf("删除后的线形表:\n");
for(i=0;i<=n;i++)
{
printf("%d ",L.elem[i]);
}
return 0;
}
syan777777
2012-10-13
知道答主
回答量:26
采纳率:0%
帮助的人:16.6万
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

#define LIST_INIT_SIZE 20
#define LISTINCREMENT 10

struct myList
{
int elem;
int length;
int listsize;
};
int InitList(myList&L)
{
L.elem=(int*)malloc(LIST_INIT_SIZE*sizeof(int));
if(!L.elem)
{
exit(0);
}
L.length=0;
L.listsize=LIST_INIT_SIZE;
return 1;
}
int ListInsert(myList &L,int i,int x)
{
int *newbase,*p,*q;
if(i<1||i>L.length-1)
{
return -1;
}
if(L.length>=L.listsize)
{
if(!(newbase=(int*)realloc(L.elem,(LIST_INIT_SIZE+LISTINCREMENT)*sizeof(int))))
exit(0);
L.elem=newbase;
L.listsize+=LISTINCREMENT;
}
p=L.elem+i;
for(q=L.elem+L.length-1;q<=p;--q)
{
*(q+1)=*q;
}
*p=x;
++L.length;
return 1;
}
int ListDelete(myList &L,int i)
{
int *newbase,*p,*q;
if(i<1||i>L.length-1)
{
return -1;
}
if(L.length<1)
{
return -1;
}
p=L.elem+i;
for(q=p;q<=L.elem+L.length-1;++q)
{
*q=*(q+1);
}
--L.length;
return 1;
}
int main(void)
{
int n,i,x;
SqList L;
InitList(L);
printf("请输入线性表L的长度:\n");
scanf("%d",&n);
printf("请输入数据:\n");
for(i=0;i<n;i++)
{
scanf("%d",&L.elem[i]);
}
printf("顺序表的元素有:\n");
for(i=0;i<n;i++)
{
printf("%d ",L.elem[i]);
}
printf("\n");
printf("请输入插入位置i:\n");
scanf("%d",&i);
ListInsert(L,i,4);
printf("插入后的线形表:\n");
for(i=0;i<=n;i++)
{
printf("%d ",L.elem[i]);
}
printf("请输入删除位置i:\n");
scanf("%d",&i);
ListInsert(L,i);
printf("删除后的线形表:\n");
for(i=0;i<=n;i++)
{
printf("%d ",L.elem[i]);
}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2012-10-13
知道答主
回答量:22
采纳率:0%
帮助的人:6.1万
展开全部
网上搜索一下就有了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友19f6edb
2012-10-13 · TA获得超过219个赞
知道答主
回答量:73
采纳率:0%
帮助的人:43.1万
展开全部
邮箱
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lbylxj
2012-10-13
知道答主
回答量:45
采纳率:0%
帮助的人:13.1万
展开全部
这个是要收钱的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式