PTA作业-数据结构-顺序表的建立及遍历

题目

读入n值及n个整数,建立顺序表并遍历输出。

输入格式:

读入n及n个整数

输出格式:

输出n个整数,以空格分隔(最后一个数的后面没有空格)。

输入样例:

在这里给出一组输入。例如:

4
-3 10 20 78

输出样例:

在这里给出相应的输出。例如:

-3 10 20 78

代码详情:

#include <stdio.h>
#define MAXSIZE 1024
typedef struct {
    int data[MAXSIZE];//顺序表存储数组data
    int length;//数组长度
} SqList;
//顺序表初始化
void InitList(SqList *L) {
    L->length = 0;
}
// 向顺序表中插入元素
int ListInsert(SqList *L, int pos, int x) {
    if (pos < 1 || pos > L->length+1 || L->length == MAXSIZE) {
        return 0; // 插入位置不合法或顺序表已满,返回0表示插入失败
    }
    for (int i = L->length; i >= pos; i--) {
        L->data[i] = L->data[i-1]; // 将pos及之后的元素向后移动一个位置
    }
    L->data[pos-1] = x; // 在pos-1的位置插入新元素x
    L->length++; // 长度加一
    return 1; // 插入成功,返回1
}
// 遍历顺序表并输出各元素的值
void TraverseList(SqList L) {
    for (int i = 0; i < L.length; i++) {
        if (i == L.length-1){
            printf("%d", L.data[i]);
        } 
        else printf("%d ", L.data[i]);
    }
}
int main() {
    int n, x;
    SqList L;
    InitList(&L); // 初始化顺序表
    scanf("%d", &n); // 读入n值
    for (int i = 1; i <= n; i++) {
        scanf("%d", &x); // 读入一个整数
        ListInsert(&L, i, x); // 将整数插入顺序表
    }
    TraverseList(L); // 遍历顺序表并输出各元素的值
    return 0;
}

总结与分析:

1.关于代码:

  给出的代码参考了本校老师所给ppt中代码以及《数据结构(C语言版)-清华大学出版社》教材中的代码。

  代码中给出的函数比较通用,可以copy至其他程序,不过需要灵活运用。

  代码中函数名称的命名,我选择了网上各种大牛命名法和教材中的命名,看起来更专业一些(嘻嘻嘻),如果懒得打那么多或者时间来不及可以用其他的,不过我这边还是建议用通用名称,便于自己回溯代码,也便于其他人看自己的代码。

2.关于算法:

  我写的算法应该不是最简便的,个人能力有限,有待加强。

3.碎碎念:

文章封面都是我喜欢的电脑壁纸哈哈哈哈哈哈哈。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值