数据结构–顺序表(创建初始化)

数据结构–顺序表(创建初始化)

顺序表和链表不同,顺序表类似数组,顺序存储就是地址连续,而链表由于指针的存在地址可以不连续。

既然是一个顺序表是一个类似数组的结构,因此在创建时要注意:
1.提前申请足够大的内存空间,防止内存不够导致数据溢出。
2.在创建和初始化的时候时刻记录顺序表的长度和存储空间大小。

步骤:
1.创建顺序表的每一个节点
2.创建实现不同功能的函数:初始化顺序表的函数、打印顺序表的函数
3.主函数 调用以上实现个功能的函数
如下:

#include <stdio.h>
#include <stdlib.h>
#define LISTINCREMENT 4 //预定义顺序表的长度4,即4个节点长度的顺序表

typedef struct {
    int *elem;//elem是开辟顺序表内存空间的首地址,找到首地址即可访问后续连续的节点,声明了一个名为elem的长度不确定的数组,也叫“动态数组”
    int length;//顺序表的长度
    int listsize;//录顺序表分配的存储容量
    }SqList; //创建了一个结构体类型


SqList CreatList(){
    SqList L;
    L.elem=(int *)malloc(LISTINCREMENT*sizeof(int));//开辟数组存储空间
    if(!L.elem){
        printf("初始化失败");
        exit(0);
        }   //申请空间失败
    L.length=0;//初始化数组长度为0,目前还未初始化,是一个空表
    L.listsize=LISTINCREMENT;//空表的最大内存容量
    return L;//返回一个长度为0,最大容量为4的数组
}

void DisplayList(SqList L){
    int i;
     for(i=0;i<L.length;i++){
        printf("%d",L.elem[i]);
        printf("\n");
        }
    }//打印每个节点的值


void main(){
    SqList L = CreatList();
    int j;
    for(j=1;j<=LISTINCREMENT;j++){
        L.elem[j-1]=j;//初始化顺序表
        L.length++;//每初始化一个顺序表的节点,顺序表长度加一
        }
    DisplayList(L);
    }  

第一次正式进入CSDN写vlog队列中,从今开始时常记录每日所学所感,如有错误和不恰当之处,欢迎诸佬批评指正,谢谢!~///(v)\~

相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页