C语言 创建一个顺序表

#include<stdio.h>
#include<stdlib.h>
#define Size 5    //对Size进行宏定义,表示顺序表申请空间的大小

/*
申请足够大小的物理空间之外,为了方便后期使用表中的数据,顺序表还需要实时记录以下 2 项数据:
    顺序表申请的存储容量;
    顺序表的长度,也就是表中存储数据元素的个数;
*/

typedef struct Table{
    int *head;    //声明了一个名为head的动态数组(不确定大小长度)
    int length;   //记录数组长度
    int size;     //记录顺序表分配存储容量
}table;           //因为使用了typedef 这里的table实际上代表着struct Table
//注意这里定义的 * head  是表示数组首元素地址。为的就是定义一个数组长度不被限制死的动态数组


table initTable(){     //定义一个函数,新建初始化顺序表
    table t;           //使用上面的结构体模型(主要是数组)定义一个顺序表t
    t.head = (int *)malloc(Size * sizeof(int)); //够造一个空的顺序表,动态申请存储空间,head不是“首”的意思,而是前面定义的数组
    if(!t.head)       //如果没有初始化成功
    {
        printf("初始化失败");
        exit(0);       //正常退出程序
    }
    t.length=0; //空表的长度初始化为0
    t.size=Size;//空表的初始存储空间为Size
    return t;   //返回成功定义初始化后的顺序表

}

//输出顺序表中元素的函数
void displayTable(table t){
    for (int i=0;i<t.length;i++) {
        printf("%d ",t.head[i]);
    }
    printf("\n");
}

int main()
{
    table t=initTable(); 
    //向顺序表中添加元素
    printf("输入顺序表元素为:");
    for(int i=1;i<=Size;i++)
    {
        int m;
        scanf("%d",&m);
        t.head[i-1]=m;
        t.length++;
    }
    printf("顺序表中存储的元素分别是:\n");
    displayTable(t);
    return 0;
}

  • 13
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
下面是用C语言创建一个顺序表的示例代码: ```c #include <stdio.h> #include <stdlib.h> #define MAXSIZE 100 // 定义顺序表的最大长度为100 typedef struct { int data[MAXSIZE]; // 存储顺序表中的元素 int length; // 存储顺序表的当前长度 } SqList; SqList* create_sq_list(int arr[], int n) { SqList* list = (SqList*)malloc(sizeof(SqList)); // 创建一个空的顺序表 int i; for (i = 0; i < n; i++) { list->data[i] = arr[i]; // 将数组中的元素复制到顺序表中 } list->length = n; // 设置顺序表的长度 return list; } void print_sq_list(SqList* list) { int i; for (i = 0; i < list->length; i++) { printf("%d ", list->data[i]); // 输出顺序表中的元素 } printf("\n"); } int main() { int arr[] = {5, 8, 3, 6, 2, 1, 9, 4, 7}; int n = sizeof(arr) / sizeof(arr[0]); // 数组长度 SqList* list = create_sq_list(arr, n); // 创建顺序表 print_sq_list(list); // 输出顺序表中的元素 return 0; } ``` 上述代码定义了一个`SqList`结构体,该结构体包含一个整型数组`data`和一个整型变量`length`,分别用于存储顺序表中的元素和顺序表的长度。 在`create_sq_list`函数中,我们首先用`malloc`函数动态分配了一个`SqList`结构体的内存空间,然后将数组中的元素复制到顺序表中,最后设置顺序表的长度,并返回指向顺序表的指针。 在`print_sq_list`函数中,我们通过for循环逐个输出顺序表中的元素。 在`main`函数中,我们定义了一个整型数组`arr`,长度为9。调用`create_sq_list`函数创建顺序表,并调用`print_sq_list`函数输出顺序表中的元素。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值