备注:一组数据称之为数据元素
逻辑结构:
1对1 -----线性关系
1对多-----树形关系(1对2---二叉树)
多对多----网状关系 ----图
存储结构:
顺序存储---顺序表
链式存储---链表
索引存储
hash存储---hash表
操作:
创建、插入、显示、删除、修改、查找
顺序表
顺序表的特点
(1)顺序并且连续存储、访问方便
(2)大小固定
(3)表满不能存、表空不能取
优点:访问方便
缺点:插入、删除不方便都需要移动元素
定义数据元素的类型
typedef int data_type;
假设做一个超市管理系统 假设做一个学生管理系统
typedef struct shop typedef struct student
{ {
char name[20];//商品的名称 char name[20];//学生的姓名
int count;//商品的数量 int id;//学号
float in_price;//商品的进价 int class;//班级
float out_price;//商品的售价 float score;
}data_type; }data_type;
定义一个顺序表的类型
#define N 10
typdef struct list
{
data_type arr[N];
int count;//有效数据的个数(0 == count不能取、N == count不能存)
}List;
创建顺序表
向顺序表中插入数据
显示
删除顺序表中的元素
销毁顺序表
- 链表
链表的特点
- 申请的空间可以不连续
- 访问不方便
- 插入、删除不需要移动元素
相关概念
链表的分类:
有没有头结点:
带头结点的链表、不带头结点的链表
指针域是双向还是单向:
单向链表、双向链表
尾结点是否指向头结点:
循环链表、不循环链表
定义数据元素的类型
typedef int data_type;
定义链表中的结点的数据类型
typedef struct linkNode
{
data_type data;//数据域
struct linkNode *pNext;
}Link;
创建新结点
向链表中插入数据
头插法
尾插法
显示
根据位置删除链表中的数据
头删法
尾删法
中间删除
销毁链表