线性表最简单的刚开始就是顺序存储结构,我是看着郝斌的视频一点一点来的,严蔚敏的书只有算法,没有具体实现,此笔记是具体的实现

为什么数据结构有ADT呢,就是为了满足数据结构的泛性,可以在多种数据类型使用

这里所说的数组并不是简单那种数组,这里所讲的是数组结构,就是在内存中是连续存储的,所以要先构造出一个这样的结构

typedef int ElemType;

typedef struct
{
ElemType* elem; //数组结构中的数据区,可以是任何数据类型,常见的是结构体类型
int length; //分配数组的长度
int listsize; //数组中实际的长度,实际元素的个数
}SqList;

现在这个数组的结构有了,也就是这个数组模型有了,要怎么使用它呢,就是给它分配内存,也就是初始化它

int InitList(SqList *pArr, int len)
{
//将分配的内存首地址返回,如果分配失败,malloc会返回NULL
pArr->elem = (ElemType*)malloc(sizeof(ElemType)*len);
if (NULL==pArr->elem)
{
printf("数组初始化失败!");
exit(-2);
}
pArr->length = len; //数组的长度
pArr->listsize = 0; //刚开始数组没有实际元素
return 1;
}

这样初始化成功,我们还要查看数组才知道到底好了没,或者进行一系列的操作,想要查看数组,还需要查看操作

void ShowList(SqList *pArr)
{
if (Is_Empty(pArr)) //首先要判断数组是否为空
printf("数组为空!");
else
{
for (int i = 0; i < pArr->listsize; i++)//不为空循环显示
{
//pArr->elem是分配的首地址,相当于初始化指针,然后可以当数组使用
printf("%3d", pArr->elem[i]);
}
}
} int Is_Empty(SqList *pArr)
{
if (0 == pArr->listsize)//数组当前实际元素为空
return 1;
else
return 0;
}

这样就可以先写个程序验证一下了

int main()
{
SqList a;
InitList(&a, 5); //自行设置数组总长度为5
ShowList(&a);
getchar();
return 0;
}

由于数组没有元素,所以会显示数组为空!

最新文章

  1. WPF 自定义BarChartControl(可左右滑动的柱状图)
  2. python3中用HTMLTestRunner.py报ImportError: No module named &#39;StringIO&#39;如何解决
  3. VMware下利用ubuntu13.04建立嵌入式开发环境之四
  4. 【UVA 1583】Digit Generator
  5. 第一次进div1了
  6. QoS令牌桶工作原理
  7. 简单的mvc之二:蜿蜒的管线
  8. Ngnix技术研究系列2-基于Redis实现动态路由
  9. Orleans例子源码
  10. 初探Electron
  11. python 二叉堆
  12. 第十二课 CSS基本选择器 css学习2
  13. beanshell断言模版
  14. gitlab报错502及处理
  15. html回顾随笔JS(*^__^*)
  16. PLSQL中使用二维存储结构---二维数组
  17. 用Parallel.For()和Parallel.For&lt;TLocal&gt;()方法实现并行运行迭代
  18. Windows API中的坑
  19. 修改Apache访问权限
  20. Oracle案例04——TNS-12547: TNS:lost contact

热门文章

  1. sql server 建表,增删改练习
  2. Extjs6 项目构建
  3. Sqli labs系列-less-5&amp;6 报错注入法(上)
  4. if(!confirm(&quot;您确定删除吗?&quot;)){return;}
  5. C++ pair
  6. JS-监听整个页面上的DOM树变化
  7. CompletableFuture提高你并发编程能力
  8. Notepad++ 连接 FTP 实现编辑 Linux文件
  9. Linux的文件访问权限及修改权限命令chmod
  10. python面试题之补充缺失的代码