对于数目结构来说,一般分为线性表-顺序表-链表,其中链表最难理解!今天来讲解下顺序表的创建与使用!
线性表的定义:
定义n个元素的有限序列,记作(a1,a2,.........,an)ai是表中数据元素,n是元素长度。
顺序表的定义:
将线性表中的元素相继放在一个连续的存储空间中。(可以用一维数组进行描述数据存储结构)
1、在头文件的 .c 文件中
#include <stdio.h> #include "1.顺序表.h" #include <stdlib.h> // 顺序表是以类似数组的方式进行存储并处理数据的 // 创建顺序表 SqList *Creat_List() { // 在堆上创建顺序表的,先创建节点 SqList *s = (SqList*)malloc(sizeof(SqList)/sizeof(char)); if(s == NULL) return NULL; // 给顺序表分配空间,并进行数据初始化 s->List = (ElementType*)malloc(sizeof(ElementType)/sizeof(char)*max_size); if(s->List == NULL) { free(s); // 如果创建的表的空间大小为空则将此空间释放掉 return NULL; // 并且返回NULL } s->len = 0; s->max_len = size; return s; } int Againmallloc(SqList*s) { if(s == NULL) return ERROR; // 重新分配空间分配的字节数目 int new_len = (s->max_len + insize)*sizeof(ElementType)/sizeof(char); ElementType*newlist = (ElementType*)realloc(s->List,new_len); if(newlist == NULL) return ERROR; s->List = newlist; s->max_len += insize; return OK; } int Insert(SqList*s,ElementType Data) // 插入数据 { if(s == NULL) return ERROR; // 判断空间是否足够 if(s->len == s->max_len) { // 如果相等则进行重新开辟空间; if(Againmallloc(s) != OK) return ; } s->List[s->len] = Data; s->len++; return OK; } void Display(SqList*s) // 显示操作,进行display()函数操作 { if(s == NULL) // 函数入口检测 return ; // 注意此处,不要带返回值 int i; for(i = 0;i < s->len;i++) // 进行遍历 { if (i % 10 == 0) // 分四个一起打印,然后换行 { printf("\n"); } printf("