纯粹的热爱 2022-04-10 16:12 采纳率: 60%
浏览 293
已结题

c语言线性表插入元素

#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0
#define ElemType int
#define MAXSIZE 100 /此处的宏定义常量表示线性表可能达到的最大长度/
typedef struct
{
ElemType elem[MAXSIZE]; /线性表占用的数组空间/
int last; /记录线性表中最后一个元素在数组 elem[ ]中的位置(下
标值),空表置为-1
/
}SeqList;

void initial(SeqList *v) //初始化线性表
{
int i;
printf("请输入初始线性表长度:n="); //输入线性表初始化时的长度
scanf("%d",&v->last);
printf("请输入从 1 到%d 的各元素\n",v->last);
getchar();
for(i=0;ilast;i++)
scanf("%d",&v->elem[i]); //输入线性表的各元素
v->last--; }

int InsList(SeqList *L,int i,ElemType e) //在线性表中插入元素
{ int k;
if((i<1)||(i>L->last+2))
{ printf("插入位置i不和法");
return(ERROR);}
if(L->last>=MAXSIZE-1)
{ printf("表已经满了,可以不要插了");
return (ERROR);
}
for(k=L->last;K>=i-1;k--)//移动后面的位置
L->elem[k]=L->elem[k-1];
L->elem[i-1]=e;
L->last++;
return (OK);
}

int DelList(SeqList *L,int i,ElemType *e)
/*在顺序表L中删除第i个数据元素,并用指针参数e返回其值。i的合法取值为1≤i≤L.last+1
*/
{ int k;
if((i<1)||(i>L->last)){
printf("你不能删除这个");
return(ERROR);
}
*e=L->elem[i-1];//保存删除元素
for(k=i;i<=L->last;k++)
L->elem[k-1]=L->elem[k];//前易
L->last--;
return(OK);

}

int Locate(SeqList L, ElemType e)
{ for(int i=0;ilast;i++)
{if(L->elem[i]=e)
return i+1;
}
return 0;
}

void print(SeqList S)
{
int i;
for(i=0;i<=S.last;i++)
printf("%5d",S.elem[i]);
printf("\n");
}

void main()
{SeqList S; //S 为一线性表
int loc,flag=1;
char j;
int ch;
int temp;
printf("本程序用来实现顺序结构的线性表。\n");
printf("可以实现查找、插入、删除等操作。\n");
initial(&S); //初始化线性表
while(flag)
{ printf("请选择:\n");
printf("1.显示所有元素\n");
printf("2.插入一个元素\n");
printf("3.删除一个元素\n");
printf("4.查找一个元素\n");
printf("5.退出程序 \n");
scanf(" %c",&j);
switch(j)
{case '1':print(S); break; //显示所有元素
case '2':{printf("请输入要插入的元素和插入位置:\n");
printf("格式:数据,位置;例如:a,2\n");
scanf(" %d,%d",&ch,&loc); //输入要插入的元素和插入的位置
temp=InsList(&S,loc,ch); //插入
if(temp==ERROR) printf("插入失败!\n"); //插入失败
else {printf("插入成功!\n"); print(S);} //插入成功
break;
}
case '3':{printf("请输入要删除元素的位置:")

img

  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2022-04-10 17:57
    关注

    从错误提示看到的问题:
    k应该是小写,你写成大写的K了
    有些地方是SeqList变量,不是SeqList *变量,不能用->访问结构体成员,仔细检查一下
    return语句要带返回值,不能只是一个return。因为main函数返回值类型为int,不是void

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月12日
  • 已采纳回答 6月4日
  • 创建了问题 4月10日

悬赏问题

  • ¥30 Matlab打开默认名称带有/的光谱数据
  • ¥50 easyExcel模板 动态单元格合并列
  • ¥15 res.rows如何取值使用
  • ¥15 在odoo17开发环境中,怎么实现库存管理系统,或独立模块设计与AGV小车对接?开发方面应如何设计和开发?请详细解释MES或WMS在与AGV小车对接时需完成的设计和开发
  • ¥15 CSP算法实现EEG特征提取,哪一步错了?
  • ¥15 游戏盾如何溯源服务器真实ip?需要30个字。后面的字是凑数的
  • ¥15 vue3前端取消收藏的不会引用collectId
  • ¥15 delphi7 HMAC_SHA256方式加密
  • ¥15 关于#qt#的问题:我想实现qcustomplot完成坐标轴
  • ¥15 下列c语言代码为何输出了多余的空格