首页 > 其他分享 >01自建一个顺序表

01自建一个顺序表

时间:2023-07-31 22:33:29浏览次数:37  
标签:01 return 自建 int void lastIndex ptr 顺序 pList

点击查看代码
#include <stdio.h>
#include <stdlib.h>

typedef int dataType;

typedef struct
{
    dataType *dataEntrance; // 顺序表数据的首地址
    int numOfElement;       // 元素个数
    int lastIndex;          // 当前顺序表最后一个元素的下标

} List, *pList;

// 顺序表初始化
pList InitSequentialList(void);
// 添加元素
void AddElement(dataType data, pList ptr);
// 按照索引删除元素
void DeleElement(int index, pList ptr);
// 显示顺序表数据
void ShowData(pList ptr);

int main(int argc, char const *argv[])
{
    pList list = InitSequentialList();

    for (size_t i = 0; i < list->numOfElement; i++)
    {
        AddElement(i, list);
    }

    DeleElement(8, list);

    ShowData(list);
    return 0;
}

pList InitSequentialList(void)
{
    // 确定顺序表元素的个数
    int sizeOfNum = 0;
    printf("Please input the num of element:\n");
    scanf("%d", &sizeOfNum);

    // 申请一个结构体的空间,并初始化
    pList ptr = calloc(1, sizeof(List));
    ptr->dataEntrance = calloc(sizeOfNum, sizeof(dataType));
    ptr->lastIndex = 0;
    ptr->numOfElement = sizeOfNum;

    return ptr;
}

/**
 * @brief 添加元素
 *
 * @param data 待添加进顺序表的元素
 * @param ptr 顺序表的地址
 */
void AddElement(dataType data, pList ptr)
{
    // 判断顺序表是否已满
    if (ptr->lastIndex == ptr->numOfElement || ptr == NULL)
    {
        printf("The sequential list overflow\n");
        return;
    }
    ptr->dataEntrance[ptr->lastIndex] = data;
    ptr->lastIndex++;
    if (ptr->lastIndex == ptr->numOfElement)
    {
        ptr->lastIndex -= 1;
    }

    return;
}

void DeleElement(int index, pList ptr)
{
    if (index > ptr->numOfElement - 1 || ptr == NULL)
    {
        printf("Your index is not exit\n");
        return;
    }
    for (size_t i = index; i < ptr->lastIndex; i++)
    {
        ptr->dataEntrance[i] = ptr->dataEntrance[i + 1];
    }

    ptr->dataEntrance[ptr->lastIndex] = 0;
    ptr->lastIndex -= 1;
    return;
}

void ShowData(pList ptr)
{
    if (ptr == NULL || ptr->lastIndex == 0)
    {
        printf("Your sequential list has no data\n");
        return;
    }

    for (size_t i = 0; i <= ptr->lastIndex; i++)
    {
        printf("%d ", ptr->dataEntrance[i]);
    }
    return;
}

标签:01,return,自建,int,void,lastIndex,ptr,顺序,pList
From: https://www.cnblogs.com/goldenFantome/p/17595035.html

相关文章

  • 2010新的开始
          1)养成习惯,经常主动回顾一段时间学到的东西(这不仅有利于巩固长时记忆,而且一段时间之后的回顾你可能已经因为新的知识学习从而对原先的认识有了进一步的看法,通过回顾,可以整合新旧知识,得到新的启发。2)创造回忆的机会:我知道第一条不顶用,没有人(好吧,很少有人)能够真正坚......
  • 日志 2012/10/12
    1.技术学习(android启动过程,Ui进程与其它线程处理looperhandermessage)  【整理一点资料】Andorid的进程和线程模型    2.技术小节  观察者模式(contentObserver,ScrollLayout)   小节文档<<观察者模式之常用监听Listener.docs>>    实例学习深入......
  • 2010中国互联网大会召开 移动互联…
    2010中国互联网大会召开移动互联网最热【Csdn8月17日报道】2010年中国互联网大会已于今日在北京国际会议中心举行。本次大会将进行三天,从第一天的情况来看,移动互联网话题最为热门。每个人都在谈移动互联网从大会议题上看,只有中国移动互联网设置了两场高峰会议,分别是18日下......
  • [SDOI2017] 数字表格
    传送门跟YY的gcd如出一辙,得到一个显然的柿子\[\prod_{k}F_{k}^{z}\]\[z=\sum_{d}\mu(d)\lfloor\frac{n}{kd}\rfloor\lfloor\frac{m}{kd}\rfloor\]那么我们设T=kd,\[\prod_{T}\prod_{k|T}F_{k}^x\]\[x=\mu(\frac{T}{k})\lfloor\frac{n}{T}\rfloor\lfl......
  • [代码随想录]Day05-哈希表 part01
    题目:242.有效的字母异位词思路:很简单,就是看两个字符串每个字母出现的次数是不是相同的。可以用两个数组来比较,也可以用一个数组比较。代码:一个数组funcisAnagram(sstring,tstring)bool{isExist:=[26]int{}//26个字母for_,ch:=ranges{isE......
  • JavaScript基础01
    javaScript作用1.嵌入动态文本于HTML页面。2.对浏览器事件做出响应。3.读写HTML元素。4.在数据被提交到服务器之前验证数据。5.检测访客的浏览器信息。控制cookies,包括创建和修改等。6.基于Node.js技术进行服务器端编程。js主要的内容ECMAScript语法变量......
  • P4017 最大食物链计数
    P4017最大食物链计数初中生物都忘了,食物链不知道从生产者还是消费者开始了题目给出有向无环图,从入度为零的点(不保证唯一)开始,走到出度为零的点(不保证唯一)共有多少条路径,答案对80112002取模保证:道路单向无重边(A吃B就没有B吃A,也不会自己吃自己)图中无环(不会有A吃B,B吃C,C吃A)思路......
  • HTML 快速301到其他页面
    要实现HTML页面以最快速度执行301跳转到其他页面,您可以在`<head>`部分使用`http-equiv`属性与`refresh`实现。以下是一个示例HTML文件,该文件会立即执行301永久重定向到指定URL:```html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv=&qu......
  • 014-热部署
    1.什么是热部署 热部署是指在应用程序运行过程中,无需停止整个应用程序,就可以重新加载被修改过的代码,并让新的代码生效。这大大提高了开发效率,节省了重启应用程序所需的时间。2.热部署有哪些优势提高开发效率:热部署允许开发人员在应用程序运行时进行代码修改,无需重新启动整个应用程......
  • 正点原子ARM裸机开发001---开发环境的搭建
    一、Ubuntu与Windows的文件互传直接通过复制粘贴,但仅限于在虚拟机上使用FTP服务进行互传:开启Ubuntu下的FPT服务打开Ubuntu终端窗口,输入以下命令:sudoapt-getinstallvsftpd等待安装完成后,输入以下命令sudovi/etc/vsftpd.conf打开vsftpd.conf文件以后,找到以......