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

Posted cheeseice

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了顺序表(顺序存储结构)及初始化过程详解相关的知识,希望对你有一定的参考价值。

自定义顺序表,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("\\n");
}
int main(){
    table t=initTable();
    //添加:向顺序表中添加元素
    for (int i=1; i<=Size; i++) {
        t.head[i-1]=i;
        t.length++;
    }
    printf("顺序表中存储的元素分别是:\\n");
    displayTable(t);
    return 0;
}

 

以上是关于顺序表(顺序存储结构)及初始化过程详解的主要内容,如果未能解决你的问题,请参考以下文章

数据结构之顺序表的增删查改等操作详解

数据结构-顺序表详解(C语言版)

队列的定义循环队列的顺序存储结构及链式存储结构

数据结构入门顺序表(SeqList)详解(初始化增删查改)

一学就会的顺序表 —— 结构及各种接口 ( 头插 / 删尾插 / 删特定位置查找 / 插入 / 删除 ) 的实现

顺序表详解及其c语言代码实现