zoukankan      html  css  js  c++  java
  • 顺序表(顺序存储结构)及初始化过程详解

    自定义顺序表,C 语言实现代码如下:

    typedef struct Table{
        int * head;//声明了一个名为head的长度不确定的数组,也叫“动态数组”
        int length;//记录当前顺序表的长度
        int size;//记录顺序表分配的存储容量
    }table;

    注意,head 是我们声明的一个未初始化的动态数组,不要只把它看做是普通的指针。

    接下来开始学习顺序表的初始化,也就是初步建立一个顺序表。建立顺序表需要做如下工作:

    • 给 head 动态数据申请足够大小的物理空间;
    • 给 size 和 length 赋初值;


    因此,C 语言实现代码如下:

    #define Size 5 //对Size进行宏定义,表示顺序表申请空间的大小
    table initTable(){
        table t;
        t.head=(int*)malloc(Size*sizeof(int));//构造一个空的顺序表,动态申请存储空间
        if (!t.head) //如果申请失败,作出提示并直接退出程序
        {
            printf("初始化失败");
            exit(0);//强制退出
        }
        t.length=0;//空表的长度初始化为0
        t.size=Size;//空表的初始存储空间为Size
        return t;
    }

    扩展:malloc和free 解释: https://www.cnblogs.com/CheeseIce/p/10846449.html

    添加一些元素,C 语言实现代码如下:

    #include <stdio.h>
    #include <stdlib.h>
    #define Size 5
    typedef struct Table{
        int * head;
        int length;
        int size;
    }table;
    table initTable(){
        table t;
        t.head=(int*)malloc(Size*sizeof(int));
        if (!t.head)
        {
            printf("初始化失败");
            exit(0);//强制退出
        }
        t.length=0;
        t.size=Size;
        return t;
    }
    //输出:顺序表中元素的函数
    void displayTable(table t){
        for (int i=0;i<t.length;i++) {
            printf("%d ",t.head[i]);
        }
        printf("
    ");
    }
    int main(){
        table t=initTable();
        //添加:向顺序表中添加元素
        for (int i=1; i<=Size; i++) {
            t.head[i-1]=i;
            t.length++;
        }
        printf("顺序表中存储的元素分别是:
    ");
        displayTable(t);
        return 0;
    }
  • 相关阅读:
    Git实战(二)原理

    Java实现 蓝桥杯 历届试题 核桃的数量
    Java实现 蓝桥杯 历届试题 核桃的数量
    Java实现 蓝桥杯 历届试题 核桃的数量
    Java实现 蓝桥杯 历届试题 核桃的数量
    Java实现 蓝桥杯 历届试题 核桃的数量
    Java实现蓝桥杯 历届试题 k倍区间
    Java实现蓝桥杯 历届试题 k倍区间
    Java实现蓝桥杯 历届试题 k倍区间
  • 原文地址:https://www.cnblogs.com/CheeseIce/p/10846455.html
Copyright © 2011-2022 走看看