当前位置:网站首页>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) )
&后跟一个变量。每个变量对应一个存储空间块。每个存储空间都有一个数字,即地址,&变量名表示取出该代码,而变量名表示取出该编号对应的存储空间中的值。
边栏推荐
猜你喜欢

The future of financial services will never stop, and the bull market will continue 2021-05-28

目标检测场景SSD-Mobilenetv1-FPN

Sentinel源码(四)(滑动窗口流量统计)

定了!就在7月30日!

Awesome!Alibaba interview reference guide (Songshan version) open source sharing, programmer interview must brush

期货具体是如何开户的?

C language improvement (3)

MobileNet ShuffleNet & yolov5替换backbone

浅浅写一下PPOCRLabel的使用及体验

CVE-2020-27986 (Sonarqube sensitive information leak) vulnerability fix
随机推荐
xshell连接虚拟机步骤_建立主机与vm虚拟机的网络连接
浅浅写一下PPOCRLabel的使用及体验
drf路由组件Routers
Mysql's case the when you how to use
【Tensorflow】AttributeError: ‘_TfDeviceCaptureOp‘ object has no attribute ‘_set_device_from_string‘
logback源码阅读(二)日志打印,自定义appender,encoder,pattern,converter
Flask项目的完整创建 七牛云与容联云
第五单元 保持状态
els strip collision deformation judgment
Audio processing: floating point data stream to PCM file
mysql的case when如何用
政策利空对行情没有长期影响,牛市仍将继续 2021-05-19
Linux:CentOS 7 安装MySQL5.7
Diodes and their applications
ping命令的使用及代码_通过命令查看ping路径
机器学习——交叉验证法
Geoffery Hinton:深度学习的下一个大事件
Flask框架
如何自定义feign方法级别的超时时间
关于密码加密的一点思路