嗨嗨嗨嗨嘿 2022-09-22 13:03 采纳率: 50%
浏览 36

这段代码,问题,如何用c语言来实现,求解答

#include<stdio.h>
#include<malloc.h>
#define MaxSize 50
typedef char ElemType;
typedef struct SqList {
ElemType data[MaxSize];
int length;
}SqList;

void InitList(SqList*& L) {//初始化线性表
L = (SqList*)malloc(sizeof(SqList));
L->length = 0;
}
void DestroyList(SqList*& L) {//销毁线性表
free(L);
}
bool ListEmpty(SqList* L) {//判断线性表是否为空表
return (L->length == 0);//通过L->length判断,length为0的时候,即是空表
}
int ListLength(SqList* L) {//求线性表的长度
return (L->length);//直接返回length即可
}
bool GetElem(SqList* L, int i, ElemType e) {//求线性表中第i个元素值
i--;
if (i<0 || i>L->length - 1) {//判断数据合法性
return false;//
}
else {//若合法,则输出
e = L->data[i];
return true;
}
}
void DispList(SqList* L) {//输出线性表
for (int i = 0; i < L->length; i++) {//利用循环遍历数组,逐一输出数组元素
printf("%c", L->data[i]);

}
printf("\n");

}
int LocateElem(SqList* L, ElemType e) {//查找第一个值域为e的元素序号
for (int i = 0; i < L->length; i++) {
if (e == L->data[i]) {
return i+1;
}
}
return 0;
}
bool InsertElem(SqList*& L, int i, ElemType e) {//插入第i个元素
int j;
if (i<1 || i>L->length + 1 || L->length == MaxSize) {//对插入位置进行判断,插入位置要在表中,且表的长度与MaxSize不可相等,不然插入后数据会溢出
return false;
}
i--;//将i从元素位置转换成数组下标
for (j = L->length; j > i;j--) {//将插入元素后面的元素往后移动一个位置
L->data[j] = L->data[j - 1];
}
L->data[i] = e;
L->length++;
return true;
}
bool ListDelete(SqList*& L, int i, ElemType e) {//删除第i个元素
int j;
if (i<1 || i>L->length) {
return false;
}
i--;
e = L->data[i];
for (j = i; j < L->length - 1; j++) {
L->data[j] = L->data[j + 1];

}
L->length--;
return true;

}
//到此为止,我们已经将可能用到的函数定义完毕
//下面基本只需调用以上函数即可
int main() {
SqList* L;
ElemType e = 0;
printf("顺序表的基本运算如下");
printf("(1)初始化顺序表L\n");
InitList(L);
printf("(2)依次插入a,b,c,d,e元素\n");
InsertElem(L, 1, 'a');
InsertElem(L, 2, 'b');
InsertElem(L, 3, 'c');
InsertElem(L, 4, 'd');
InsertElem(L, 5, 'e');
printf("(3)输出顺序表L:\n");
DispList(L);
printf("(4)顺序表L长度:%d\n",ListLength(L));
printf("(5)顺序表L为%s\n", ListEmpty(L));
GetElem(L, 3, e);
printf("(6)顺序表L的第3个元素:%c\n",e);
printf("(7)元素a的位置:%d\n",LocateElem(L,'a'));
printf("(8)在第四给元素位置上插入f元素\n");
InsertElem(L, 4, 'f');
printf("(9)输出顺序表L:\n");
DispList(L);
printf("(10)删除L的第3个元素\n");
ListDelete(L, 3, e);

printf("(11)输出顺序表L:\n");
DispList(L);

printf("(12)释放顺序表L\n");
DestroyList(L);
return 1;

}

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-22 14:28
    关注
    评论

报告相同问题?

问题事件

  • 创建了问题 9月22日

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里