• 顺序表(顺序存储结构)及初始化过程详解


    自定义顺序表,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;
    }
  • 相关阅读:
    tech
    自定义类与NSCopying协议
    @autoreleasepool与循环
    可变类型属性与copy
    [HDOJ]_2005_第几天?
    不可变实例、可变实例、copy与mutableCopy
    CGRectIntersection函数与CGRectIsNull函数
    使用dispatch_benchmark函数进行基准测试
    [HDOJ]_2035_人见人爱A^B
    使用for、forin和block遍历NSArray的效率的比较
  • 原文地址:https://www.cnblogs.com/CheeseIce/p/10846455.html
Copyright © 2020-2023  润新知