程序=算法+数据 (算法就是处理数据的)
数据结构:
1、物理结构:数据在内存中的表现形式
1、顺序结构:数组(在一块空间,且元素之间相邻)
2、链式结构:元素之间互不相邻,且元素之间有一定的联系。
2、逻辑结构:表据的联系(映象)
联系:元素之间的联系(映象)
逻辑结构如下:
散列:元素之间没有联系
线性结构:节点之间的联系1:1,且每一个节点只能一个直接前驱和直接后驱
(节点元素之间的联系像一条线)
树形结构:节点之间存在1:N的联系。(同层节点互不相连)
图形结构:节点之间存在N:N的联系。
3、线性的结构:
1、物理区:线性顺序表,线性链表:
线性顺序表:将所有的数据存放一块空间,且存在1:1的系
struct people
{
int id;
char name[10];
char telphone[11];
//下一个学生的手机号
int next;
};
struct people e[48];
总结:优点:遍历简单 缺点:删除和插入麻烦,长度固定
链式线性表:所有节点都不在同一块空间,但节点之间通过指针来相互联系
1、单向链式线性表:
struct Node
{
data;
struct Node* next;//一个联系(单向)
};
头节点指针变量:存放链表中第一个节点的地址。
struct Node* head;
尾节点:没有直接后驱(指向域为next==NULL)
操作功能:
1、插入节点:(头插法,尾插法:新的结点成为尾节点)
1、为节点分配空间
2、修改节点的联系
尾插法:新的节点成为尾节点
头插法:新的节点成为头节点
2、删除节点:
3、修改节点:
4、查找节点:
5、遍历节点:
2、双向链式线性表: