王鹿其 发表于 2024-3-21 23:17:06

c++

顺序表结构和运算定义,算法的实现以库文件方式实现,不得在测试主程序中直接实现;
比如存储、算法实现放入文件:seqList.h
实验程序有较好可读性,各运算和变量的命名直观易懂,符合软件工程要求;
程序有适当的注释。

FishC 发表于 2024-3-21 23:17:29

首先,让我们来创建一个顺序表的结构和运算定义的头文件 `seqList.h`,其中包含了顺序表的基本操作和算法实现。

++
#ifndef SEQLIST_H
#define SEQLIST_H

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

typedef struct {
    int data; // 顺序表的数据域
    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 = list->data; // 元素后移
    }

    list->data = 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 = list->data; // 元素前移
    }

    list->length--;
   
    return 1;
}

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

    *data = list.data;
   
    return 1;
}

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

// 打印顺序表中的所有元素
void printList(SeqList list) {
    for (int i = 0; i < list.length; i++) {
      printf("%d ", list.data);
    }
    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 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: c++