鱼C论坛

 找回密码
 立即注册
查看: 528|回复: 1

c++

[复制链接]
发表于 2024-3-21 23:17:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
顺序表结构和运算定义,算法的实现以库文件方式实现,不得在测试主程序中直接实现;
比如存储、算法实现放入文件:seqList.h
实验程序有较好可读性,各运算和变量的命名直观易懂,符合软件工程要求;
程序有适当的注释。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-3-21 23:17:29 | 显示全部楼层
首先,让我们来创建一个顺序表的结构和运算定义的头文件 `seqList.h`,其中包含了顺序表的基本操作和算法实现。
++
#ifndef SEQLIST_H
#define SEQLIST_H

#define MAX_SIZE 100 // 定义顺序表的最大长度

typedef struct {
    int data[MAX_SIZE]; // 顺序表的数据域
    int length; // 顺序表的当前长度
} SeqList;

// 初始化顺序表
void init(SeqList *list);

// 判断顺序表是否为空
int isEmpty(SeqList list);

// 判断顺序表是否已满
int isFull(SeqList list);

// 获取顺序表的长度
int getLength(SeqList list);

// 在指定位置插入元素
int insert(SeqList *list, int index, int data);

// 删除指定位置的元素
int delete(SeqList *list, int index);

// 获取指定位置的元素
int getElem(SeqList list, int index, int *data);

// 查找指定元素的位置
int locateElem(SeqList list, int data);

// 打印顺序表中的所有元素
void printList(SeqList list);

#endif

接下来在 `seqList.c` 文件中实现顺序表的各种操作。
++
#include <stdio.h>
#include "seqList.h"

// 初始化顺序表
void init(SeqList *list) {
    list->length = 0;
}

// 判断顺序表是否为空
int isEmpty(SeqList list) {
    return (list.length == 0);
}

// 判断顺序表是否已满
int isFull(SeqList list) {
    return (list.length == MAX_SIZE);
}

// 获取顺序表的长度
int getLength(SeqList list) {
    return list.length;
}

// 在指定位置插入元素
int insert(SeqList *list, int index, int data) {
    if (index < 0 || index > list->length)
        return 0; // 插入位置不合法

    if (isFull(*list))
        return 0; // 顺序表已满

    for (int i = list->length - 1; i >= index; i--) {
        list->data[i + 1] = list->data[i]; // 元素后移
    }

    list->data[index] = data;
    list->length++;
    
    return 1;
}

// 删除指定位置的元素
int delete(SeqList *list, int index) {
    if (index < 0 || index >= list->length)
        return 0; // 删除位置不合法

    for (int i = index; i < list->length - 1; i++) {
        list->data[i] = list->data[i + 1]; // 元素前移
    }

    list->length--;
    
    return 1;
}

// 获取指定位置的元素
int getElem(SeqList list, int index, int *data) {
    if (index < 0 || index >= list.length)
        return 0; // 获取位置不合法

    *data = list.data[index];
    
    return 1;
}

// 查找指定元素的位置
int locateElem(SeqList list, int data) {
    for (int i = 0; i < list.length; i++) {
        if (list.data[i] == data) {
            return i; // 找到元素的位置
        }
    }
    
    return -1; // 未找到元素
}

// 打印顺序表中的所有元素
void printList(SeqList list) {
    for (int i = 0; i < list.length; i++) {
        printf("%d ", list.data[i]);
    }
    printf("\n");
}

现在你可以在测试主程序中使用头文件 `seqList.h` 来操作顺序表。
++
#include <stdio.h>
#include "seqList.h"

int main() {
    SeqList list;
    init(&list);

    insert(&list, 0, 10);
    insert(&list, 1, 20);
    insert(&list, 2, 30);

    int data;
    getElem(list, 1, &data);
    printf("Element at index 1: %d\n", data); // Output: 20

    int index = locateElem(list, 30);
    printf("Element 30 is at index: %d\n", index); // Output: 2

    delete(&list, 1);

    printList(list); // Output: 10 30

    return 0;
}

这就是一个简单的顺序表实现,你可以根据需要添加更多的操作和算法。请注意,在测试主程序中只使用头文件 `seqList.h`,而将具体实现放在 `seqList.c` 文件中,以便提高代码的可读性和可维护性。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-2-24 19:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表