顺序表的初始化、取值、查找、插入、删除 您所在的位置:网站首页 初始化顺序表的函数原型 顺序表的初始化、取值、查找、插入、删除

顺序表的初始化、取值、查找、插入、删除

2024-02-17 05:32| 来源: 网络整理| 查看: 265

顺序表查找(n+1)/2,插入n/2,删除(n-1)/2

顺序表的初始化

#include #include #include #define MAX_SIZE 100 // 定义顺序表的最大长度 typedef struct { int data[MAX_SIZE]; // 用数组存储顺序表中的元素 int length; // 顺序表的当前长度 } SeqList; // 初始化顺序表 void InitList(SeqList* L) { L->length = 0; memset(L->data, 0, sizeof(L->data)); // 将数组中的元素全部初始化为0 } int main() { SeqList L; InitList(&L); // 初始化顺序表 return 0; }

以上代码中,首先包含了所需的标头文件stdio.h、stdlib.h和string.h。然后定义了一个SeqList结构体,其中data数组用来存储顺序表中的元素,length表示当前顺序表的长度。在InitList函数中,将length初始化为0,并使用memset函数将data数组中的元素全部初始化为0。最后在main函数中,声明一个SeqList类型的变量L,并通过调用InitList函数来初始化顺序表。

顺序表的取值

#include #include #define MAX_SIZE 100 // 定义顺序表的最大长度 typedef struct { int data[MAX_SIZE]; // 用数组存储顺序表中的元素 int length; // 顺序表的当前长度 } SeqList; // 初始化顺序表 void InitList(SeqList *L) { L->length = 0; } // 取出顺序表中第i个元素的值 int GetElem(SeqList *L, int i) { if (i < 1 || i > L->length) { // 判断i的合法性 printf("Error: Invalid index\n"); exit(1); } return L->data[i - 1]; } int main() { SeqList L; int i, value; L.length = 5; for (i = 0; i < L.length; i++) { L.data[i] = i + 1; } value = GetElem(&L, 3); // 取出顺序表中第3个元素的值 printf("The value of the 3rd element is: %d\n", value); return 0; }

以上代码中,首先定义了一个SeqList结构体,其中data数组用来存储顺序表中的元素,length表示当前顺序表的长度。在InitList函数中,将length初始化为0。在GetElem函数中,首先判断参数i的合法性,如果不合法则输出错误信息并退出程序。然后返回data数组中第i-1个元素的值。在main函数中,声明一个SeqList类型的变量L,并给L赋值,然后通过调用GetElem函数来取出顺序表中第3个元素的值,并输出结果。

顺序表的 查找

#include #include #define MAX_SIZE 100 // 定义顺序表的最大长度 typedef struct { int data[MAX_SIZE]; // 用数组存储顺序表中的元素 int length; // 顺序表的当前长度 } SeqList; // 初始化顺序表 void InitList(SeqList *L) { L->length = 0; } // 查找顺序表中第一个值为e的元素,并返回其位序 int LocateElem(SeqList *L, int e) { int i; for (i = 0; i < L->length; i++) { if (L->data[i] == e) { // 找到了值为e的元素 return i + 1; // 返回其位序 } } return 0; // 没有找到值为e的元素 } int main() { SeqList L; int i, pos; L.length = 5; for (i = 0; i < L.length; i++) { L.data[i] = i + 1; } pos = LocateElem(&L, 3); // 查找值为3的元素的位序 if (pos == 0) { printf("The element is not found\n"); } else { printf("The element is found at position %d\n", pos); } return 0; }

以上代码中,首先定义了一个SeqList结构体,其中data数组用来存储顺序表中的元素,length表示当前顺序表的长度。在InitList函数中,将length初始化为0。在LocateElem函数中,使用循环遍历顺序表中的元素,如果找到了值为e的元素,则返回其位序。如果遍历完整个顺序表仍未找到值为e的元素,则返回0。在main函数中,声明一个SeqList类型的变量L,并给L赋值,然后通过调用LocateElem函数来查找值为3的元素的位序,并输出结果。

顺序表的插入

#include #include #define MAX_SIZE 100 // 定义顺序表的最大长度 typedef struct { int data[MAX_SIZE]; // 用数组存储顺序表中的元素 int length; // 顺序表的当前长度 } SeqList; // 初始化顺序表 void InitList(SeqList *L) { L->length = 0; } // 在顺序表的第i个位置插入元素e void ListInsert(SeqList *L, int i, int e) { int j; if (i < 1 || i > L->length + 1) { // 判断i的合法性 printf("Error: Invalid index\n"); exit(1); } if (L->length == MAX_SIZE) { // 判断顺序表是否已满 printf("Error: The list is full\n"); exit(1); } for (j = L->length; j >= i; j--) { // 将第i个位置及其后面的元素后移 L->data[j] = L->data[j - 1]; } L->data[i - 1] = e; // 将元素e插入到第i个位置 L->length++; // 顺序表长度加1 } int main() { SeqList L; int i; L.length = 5; for (i = 0; i < L.length; i++) { L.data[i] = i + 1; } ListInsert(&L, 3, 10); // 在第3个位置插入元素10 for (i = 0; i < L.length; i++) { printf("%d ", L.data[i]); // 输出顺序表中的元素 } printf("\n"); return 0; }

以上代码中,首先定义了一个SeqList结构体,其中data数组用来存储顺序表中的元素,length表示当前顺序表的长度。在InitList函数中,将length初始化为0。在ListInsert函数中,首先判断参数i的合法性和顺序表是否已满,如果不合法则输出错误信息并退出程序。然后将第i个位置及其后面的元素后移一位,空出第i个位置,最后将元素e插入到第i个位置。在main函数中,声明一个SeqList类型的变量L,并给L赋值,然后通过调用ListInsert函数在第3个位置插入元素10,并输出顺序表中的元素。

顺序表的删除

#include #include #define MAX_SIZE 100 // 定义顺序表的最大长度 typedef struct { int data[MAX_SIZE]; // 用数组存储顺序表中的元素 int length; // 顺序表的当前长度 } SeqList; // 初始化顺序表 void InitList(SeqList *L) { L->length = 0; } // 删除顺序表中第i个元素,并返回其值 int ListDelete(SeqList *L, int i) { int j, e; if (i < 1 || i > L->length) { // 判断i的合法性 printf("Error: Invalid index\n"); exit(1); } e = L->data[i - 1]; // 保存被删除的元素的值 for (j = i; j < L->length; j++) { // 将第i个位置及其后面的元素前移 L->data[j - 1] = L->data[j]; } L->length--; // 顺序表长度减1 return e; } int main() { SeqList L; int i, e; L.length = 5; for (i = 0; i < L.length; i++) { L.data[i] = i + 1; } e = ListDelete(&L, 3); // 删除第3个元素,并返回其值 printf("The deleted element is: %d\n", e); for (i = 0; i < L.length; i++) { printf("%d ", L.data[i]); // 输出顺序表中的元素 } printf("\n"); return 0; }

以上代码中,首先定义了一个SeqList结构体,其中data数组用来存储顺序表中的元素,length表示当前顺序表的长度。在InitList函数中,将length初始化为0。在ListDelete函数中,首先判断参数i的合法性,如果不合法则输出错误信息并退出程序。然后保存被删除的元素的值,将第i个位置及其后面的元素前移一位,最后将顺序表的长度减1。在main函数中,声明一个SeqList类型的变量L,并给L赋值,然后通过调用ListDelete函数删除第3个元素,并输出被删除的元素的值和顺序表中的元素。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有