概念
程序=数据结构+算法;
数据结构的本质----如何组织存储数据(用以提高软件效率)
MVC:软件设计架构
M:数据的管理
V:视图----数据的反应和人机交互
C:逻辑控制
逻辑结构:
线性结构:前方最多只有一个数据,后方最多也只有一个数据。
树形结构:后方多个数据,前方一个
网状结构:多对多
物理结构:
顺序存储的优缺点:
优点:数据访问方便
缺点:数据的插入不方便,内存要预分配,容易造成内存碎片
链式存储的优缺点:
访问数据必须遍历
插入删除效率高,不需要预分配
索引存储:通过存储数据的位置,依靠位置来寻找到数据
散列存储:通过哈希算法来实现对数据元素的查找
链表:
结点:指针域加数据域
有头链表:第一个结点没有数据域
无头链表:第一个结点有数据域
操作:创建--插入--删除--查找--修改--销毁--遍历
创建:
使用结构体创建,结构体至少包括数据域(整形、浮点型......)和指针域(用结构体定义一个指针)例:
表头的创建:
struct link
{
int a; //数据域
struct node *phead; //指针域,数据类型为表结点的类型
};
表结点的创建:
struct node
{
int data;//储存数据,除整形外,还可以为其他类型
srtuct node *pnext;
};
插入:
用表头的pnode指向表结点,即为一个单向列表,若需增加表长度,只需要将表结点的pnext指向下一个结点,增加结束,需将最后一个表结点指向NULL。
遍历、查找与修改:
其原理相同,即为创建一个结点类型的指针,使其等于(指向)表头的head,然后通过不断的使其指向结点的pnext,直到指向null值为止,该过程即为遍历,而查找只需将停止条件的null改为乡查找的数据即可,在找到后,向结点的数据中输入新的数据,即为修改。
删除、销毁:
删除时,找到要删除的结点,然后将前一个结点的pnext指向要删除结点的下一个结点,最后使用free函数将结点释放即可。
销毁时,定义一个指针,指向头或尾结点,使用循环,调用删除函数,从头开始删除或从尾开始删除,直到表头的head指向null为止,最后释放(free)表头即可。