首页 > 其他分享 >11.10日补交 顺序表的实现

11.10日补交 顺序表的实现

时间:2023-11-11 14:34:52浏览次数:46  
标签:顺序 return 线性表 int 补交 elem 11.10 length Sqlist

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

#define M 100 // 线性表的最大容量

typedef int ElemType; // 定义元素类型

// 顺序线性表的结构体定义
typedef struct {
    ElemType *elem; // 存放元素的动态数组
    int length; // 线性表中当前元素的个数
} Sqlist;

// 初始化线性表
void InitList(Sqlist &L) {
    L.elem = new ElemType[M];
    if (!L.elem) {
        exit(0); // 分配内存失败,退出程序
    }
    L.length = 0; // 初始化长度为0
}

// 销毁线性表
void DestroyList(Sqlist &L) {
    free(L.elem); // 释放内存
    L.length = 0; // 将长度设置为0
}

// 插入元素
int Insert(Sqlist &L, int i, ElemType e) {
    if (i < 1 || i > L.length + 1) {
        return 0; // 插入位置不合法
    }
    if (L.length >= M) {
        return 0; // 线性表已满
    }
    for (int j = L.length; j >= i; j--) {
        L.elem[j] = L.elem[j - 1]; // 将元素后移
    }
    L.elem[i - 1] = e; // 插入元素
    L.length++; // 长度加1
    return 1;
}

// 删除元素
int Delete(Sqlist &L, int i, ElemType *e) {
    if (i < 1 || i > L.length) {
        return 0; // 删除位置不合法
    }
    *e = L.elem[i - 1]; // 获取被删除的元素
    for (int j = i; j < L.length; j++) {
        L.elem[j - 1] = L.elem[j]; // 将元素前移
    }
    L.length--; // 长度减1
    return 1;
}

// 获取元素
int GetElem(Sqlist L, int i, ElemType *e) {
    if (i < 1 || i > L.length) {
        return 0; // 获取位置不合法
    }
    *e = L.elem[i - 1]; // 获取元素
    return 1;
}

// 查找元素
int LocateElem(Sqlist L, ElemType e) {
    for (int i = 0; i < L.length; i++) {
        if (L.elem[i] == e) {
            return i + 1; // 查找成功,返回位置
        }
    }
    return 0; // 查找失败,返回0
}

// 判断线性表是否为空
int ListEmpty(Sqlist L) {
    return L.length == 0;
}

// 获取线性表的长度
int ListLength(Sqlist L) {
    return L.length;
}

int main() {
    Sqlist L;
    ElemType e;
    InitList(L);
    Insert(L, 1, 1);
    Insert(L, 2, 2);
    Insert(L, 3, 3);
    Delete(L, 2, &e);
    printf("删除的元素:%d\n", e);
    GetElem(L, 2, &e);
    printf("第2个元素:%d\n", e);
    printf("查找元素3的位置:%d\n", LocateElem(L, 3));
    printf("线性表是否为空:%d\n", ListEmpty(L));
    printf("线性表的长度:%d\n", ListLength(L));
    DestroyList(L); // 销毁线性表
    return 0;
}

 

标签:顺序,return,线性表,int,补交,elem,11.10,length,Sqlist
From: https://www.cnblogs.com/muzhaodi/p/17825883.html

相关文章

  • 23.11.10(Ajax和Json的数据传输问题)
    使用Ajax写查询功能,后端数据一直传不到前端,遇到parse解析的卡住原因:传来的json数据格式不正确,后端Java还respond了一个success解决方法:把success去掉<scriptsrc="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script><script>$(d......
  • 2023.11.10
    今天创建了vue项目,了解了vue项目的目录如下: vue的组件分为组合式api和选项式api ①创建了组件内容如下:<scriptsetup>import{articleGetAllService,articleSearchService}from'@/api/article.js'//定义响应式数据import{ref}from'vue';constarticleList=re......
  • 日记 2023.11.10:2023 syzx 秋季训练 6
    日记2023.11.10:2023syzx秋季训练6*HIA拆位,带权并查集/二分图判定。B按位做差,于是只需要一次bfs。bonus:长度\(\leq5000\)(单次)或\(\leq20\)(多次)https://codeforces.com/problemset/problem/1852/C?不是同一题。C分类讨论。钦定\(A\leqB\)。必然有一维,满足两个......
  • 闲话11.10
    今天累死了。上午打模拟赛,五分钟AK了,很快啊。然后可能是有人看我们AK太快了,就把我们踢了......
  • 2023.11.10——每日总结
    学习所花时间(包括上课):9h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习;我了解到的知识点:1.丑人多作怪明日计划:学习......
  • 11.10
    今天上午学英语时讲了篇完形填空,内容像是个搞笑故事,讲的是老师问作者他最喜欢的动物是谁然后他答的炸鸡,就被带到校长室了。就诸如此类他被反复见了三次校长。(第一次问最喜欢的动物答炸鸡,第二天也答鸡因为可以被炸成炸鸡,第三天问最喜欢的人人回答肯德基老爷爷,就这样)但我在写这篇......
  • 11.10 模拟赛小记
    特附今日闲话。100+95+0+20.A.数字操作(num)赛时其实是看了一下样例和数据范围的一档说均为质数,无端的想到gcd于是就秒掉了。其实因为这个减数、统计不重复的过程就类似于辗转相除吧。然后就没了。没什么说的,存一下码好了。#include<bits/stdc++.h>usingnamespacestd;......
  • 11.10
    今天下雪了学习了Javaweb基础,增加操作,今天代码如下packagedao;importbean.Bean;importutils.DBUtils;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.ArrayList;importjava.util......
  • nfls 11.10挂分日记
    今天老老实实写了对拍,但是还是挂分了。T1数论分块,学了一下双指针的写法,我那个写法又对于大肠选手直接T飞了。没注意到这个数据其实很大概率都是全部输出0,在没有精心构造的情况下几乎全都跑挂了。T2一个最短路的变形题目,每个行每个列跑一个最短路就好了,将关键点之间连边,然......
  • 11.10每日总结
    今天创建了vue项目,了解了vue项目的目录如下: vue的组件分为组合式api和选项式api ①创建了组件内容如下:<scriptsetup>import{articleGetAllService,articleSearchService}from'@/api/article.js'//定义响应式数据import{ref}from'vue';constarticleList=re......