当前位置:网站首页>8576 顺序线性表的基本操作
8576 顺序线性表的基本操作
2022-08-02 14:02:00 【weixin_50862344】
8576 顺序线性表的基本操作
- 题干
时间限制:1000MS 代码长度限制:10KB
提交次数:9027 通过次数:2456
题型: 编程题 语言: G++;GCC
Description 编写算法,创建初始化容量为LIST_INIT_SIZE的顺序表T,并实现插入、删除、遍历操作。本题目给出部分代码,请补全内容。
- 答案
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define OK 1
#define ERROR 0
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
#define ElemType int
typedef struct
{
int *elem;
int length;
int listsize;
}SqList;
int InitList_Sq(SqList &L)
{
L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
L.length=0;
L.listsize=LIST_INIT_SIZE;
return OK;
// 算法2.3,构造一个空的线性表L,该线性表预定义大小为LIST_INIT_SIZE
// 请补全代码
}
int Load_Sq(SqList &L)
{
// 输出顺序表中的所有元素
int i;
if(L.length==0) printf("The List is empty!"); // 请填空
else
{
printf("The List is: ");
for(i=0;i<=L.length-1;i++) printf("%d ",L.elem[i]); // 请填空
}
printf("\n");
return OK;
}
int ListInsert_Sq(SqList &L,int i,int e)
{
if(i<1||i>L.length+1) return ERROR;
int j;
if(L.length==LIST_INIT_SIZE) return ERROR;//???
for(j=L.length-1;j>=i-1;j--)
L.elem[j+1]=L.elem[j];
L.elem[i-1]=e;
++L.length;
return OK;
// 算法2.4,在顺序线性表L中第i个位置之前插入新的元素e
// i的合法值为1≤i≤L.length +1
// 请补全代码
}
int ListDelete_Sq(SqList &L,int i, int &e)
{
if(i<1||i>L.length) return ERROR;
int j;
e=L.elem[i-1];
for(j=i;j<=L.length-1;j++)
L.elem[j-1]=L.elem[j];
--L.length;
return OK;//如何返回
// 算法2.5,在顺序线性表L中删除第i个位置的元素,并用e返回其值
// i的合法值为1≤i≤L.length
// 请补全代码
}
int main()
{
SqList T;
int a, i;
ElemType e, x;
if(InitList_Sq(T)) // 判断顺序表是否创建成功
{
printf("A Sequence List Has Created.\n");
}
while(1)
{
printf("1:Insert element\n2:Delete element\n3:Load all elements\n0:Exit\nPlease choose:\n");
scanf("%d",&a);
switch(a)
{
case 1: scanf("%d%d",&i,&x);
if(ListInsert_Sq(T,i,x)==ERROR) printf("Insert Error!\n"); // 判断i值是否合法,请填空
else printf("The Element %d is Successfully Inserted!\n", x);
break;
case 2: scanf("%d",&i);
if(ListDelete_Sq(T,i,e)==ERROR) printf("Delete Error!\n"); // 判断i值是否合法,请填空
else printf("The Element %d is Successfully Deleted!\n", e);
break;
case 3: Load_Sq(T);
break;
case 0: return 1;
}
}
}
在抄答案前最好想明白的事
以下问题均是我之前有存疑的问题,若有更好的解释也可以评论来让更多人知道
int *elem; 为啥要在elem前加 *?
数组长度 length 和 i范围 之间的关系:
(a)长度length从1开始
(b)而顺序表实质上是一个数组,因此i从0开始L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));用法的理解:
(类型 *)malloc(数字 *sizeof(类型));
e.g. (int *)malloc(10 *sizeof(int));
使用realloc,free,malloc,calloc头文件要有一个#include<stdlib.h>
i的合法值为在插入和删除函数不同:
插入:1≤i≤L.length +1
删除函数:1≤i≤L.length怎么实现返回删除值
先保存返回值在主函数中再使用为什么不能直接使用C语言
代码中存在如 & 的c++运算符( 例:int Load_Sq(SqList &L) )
&后跟一个变量。每个变量对应一个存储空间块。每个存储空间都有一个数字,即地址,&变量名表示取出该代码,而变量名表示取出该编号对应的存储空间中的值。
边栏推荐
- 如何选择正规的期货交易平台开户?
- xshell连接虚拟机步骤_建立主机与vm虚拟机的网络连接
- The world's largest Apache open source foundation is how it works?
- 不精确微分/不完全微分(Inexact differential/Imperfect differential)
- redis延时队列
- Interview | with questions to learn, Apache DolphinScheduler Wang Fuzheng
- Flask上下文,蓝图和Flask-RESTful
- Some impressions of the 519 plummet 2021-05-21
- Flask框架
- 关于C#使用DateTime数据的细节
猜你喜欢
目标检测场景SSD-Mobilenetv1-FPN
海明校验码纠错设计原理
苏州大学:从 PostgreSQL 到 TDengine
CVE-2020-27986 (Sonarqube sensitive information leak) vulnerability fix
A number of embassies and consulates abroad have issued reminders about travel to China, personal and property safety
How to solve mysql service cannot start 1069
stack && queue
IDEA打包jar包
史上最全!47个“数字化转型”常见术语合集,看完秒懂~
binary search && tree
随机推荐
【学习笔记】数位dp
Object detection scene SSD-Mobilenetv1-FPN
yolov5,yolov4,yolov3乱七八糟的
What are the file encryption software?Keep your files safe
第七单元 ORM表关系及操作
Raft协议图解,缺陷以及优化
Flutter 实现光影变换的立体旋转效果
Sentinel源码(五)FlowSlot以及限流控制器源码分析
【ONE·Data || Getting Started with Sorting】
xshell连接虚拟机步骤_建立主机与vm虚拟机的网络连接
关于市场后市的发展预测? 2021-05-23
idea社区版下载安装教程_安装天然气管道的流程
Detailed explanation of ORACLE expdp/impdp
网络剪枝(1)
binary search && tree
泡利不相容原理适用的空间范围(系统)是多大?
Kunpeng devkit & boostkit
【Tensorflow】AttributeError: '_TfDeviceCaptureOp' object has no attribute '_set_device_from_string'
Large and comprehensive pom file example
此次519暴跌的几点感触 2021-05-21