C语言顺序表实现:有序表插入元素

本篇博客将介绍如何使用C语言顺序表实现有序表的插入操作,帮助您理解和掌握线性表的基本概念、存储结构以及插入运算的算法实现。

1. 实验目的

  • 掌握线性表的基本知识
  • 深入理解、掌握并灵活运用线性表
  • 熟练掌握线性表的顺序存储结构及主要运算的实现

2. 问题描述

已知顺序表L递增有序,将元素X插入到线性表的适当位置上,保证线性表有序。

输入格式:

第1行输入顺序表长度,第2行输入递增有序的顺序表,第3行输入要插入的数据元素X。

输出格式:

对每一组输入,在一行中输出插入X后的递增的顺序表。

输入样例:

5
1 3 5 7 9
6

输出样例:

1,3,5,6,7,9,

3. 代码实现

#include <stdio.h>

#define MAX_SIZE 100

typedef struct {
    int data[MAX_SIZE];
    int length;
} SeqList;

void insert(SeqList *list, int x) {
    int i, j;
    // 找到插入位置
    for (i = 0; i < list->length; i++) {
        if (list->data[i] > x) {
            break;
        }
    }
    // 将插入位置及之后的元素后移
    for (j = list->length; j > i; j--) {
        list->data[j] = list->data[j - 1];
    }
    // 插入元素
    list->data[i] = x;
    // 更新表长
    list->length++;
}

void printList(SeqList list) {
    int i;
    for (i = 0; i < list.length - 1; i++) {
        printf('%d,', list.data[i]);
    }
    printf('%d\n', list.data[i]);
}

int main() {
    SeqList list;
    int n, i, x;
    // 读取顺序表长度
    scanf('%d', &n);
    list.length = n;
    // 读取顺序表数据
    for (i = 0; i < n; i++) {
        scanf('%d', &list.data[i]);
    }
    // 读取要插入的元素
    scanf('%d', &x);
    // 插入元素
    insert(&list, x);
    // 输出结果
    printList(list);
    return 0;
}

4. 代码解释

  • SeqList结构体定义了顺序表的结构,包含一个整型数组data存储数据元素,以及一个整型变量length存储顺序表的长度。
  • insert函数实现了将元素x插入到有序顺序表list中的操作。
    • 首先,通过遍历顺序表,找到第一个大于x的元素的位置i,即为插入位置。
    • 然后,从最后一个元素开始,将i及之后的元素依次向后移动一个位置,腾出插入位置。
    • 最后,将元素x插入到位置i,并将顺序表长度加1。
  • printList函数用于输出顺序表中的所有元素。
  • main函数中首先读取顺序表的长度和数据,然后读取要插入的元素,调用insert函数插入元素,最后调用printList函数输出插入元素后的顺序表。

5. 总结

本篇博客介绍了如何使用C语言顺序表实现有序表的插入操作,并提供了详细的代码和解释。希望通过本篇博客,您可以更好地理解和掌握线性表的相关知识。

C语言顺序表实现:有序表插入元素

原文地址: https://www.cveoy.top/t/topic/j8S 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录