一,数据结构相关概念
1,数据
现实生活中各种各样的数据,比如:一个学生的信息,一个产品的信息,一个动物的信息等
2,数据结构
一组数据之间的关系,称为数据的结构,简称数据结构。
3,数据的逻辑结构
指的是数据之间的逻辑关系。 按逻辑关系将数据分为: 1,线性结构数据 1》线性表 2》栈 3》队列 2,非线性结构数据 1》树 2》图
4,数据的存储结构
指的是数据在计算机内存中的存储方式,分为: 1》顺序存储结构 分配一块连续内存空间 通过相对位置体现数据的逻辑关系 2》链式存储结构 分别给每一个数据单独分配空间 通过指针体现数据的逻辑关系。
5,算法
对存储在计算机中不同搞得数据进行插入,删除,遍历,查找,排序等的功能的实现。
补充:ubuntuIP配置 1,打开配置文件:
sudo vim /etc/netplan/01-network-manager-all.yaml
2,在文件中添加下面配置信息
# Let NetworkManager manage all devices on this system
network:
version: 2
# renderer: NetworkManager
ethernets:
ens33:
dhcp4: no
dhcp6: no
addresses: [192.168.90.5/24]
gateway4: 192.168.90.1
nameservers:
addresses: [202.96.128.86]
3,重启网络服务
sudo netplan apply
二,线性表
1,特征
1》数据特征 有一个表头数据,有一个表尾数据,中间每一个数据有且仅有一个直接前驱和一个直接后继。 2》操作特征 允许在任意位置插入或删除数据
2,线性表的顺序存储结构(顺序表)
2.1 顺序表结构定义
#ifndef __SEQLIST_H__
#define __SEQLIST_H__
struct student{
int sno;
char name[20];
float score;
};
typedef struct student datatype;
//定义顺序表结构体
typedef struct seqlist{
datatype data[SIZE];
int last; //记录最后一个数据的下标,如果表为空,则last=-1
}seq_list,*seq_plist;
#endif
3, 线性表的链式存储结构(链表)
3.1 链表结点类型
//测试用的数据类型
struct student{
int sno;
char name[20];
float score;
};
typedef struct student datatype; //将抽象类型datatype具体化为学生类型
typedef struct listnode{
datatype data;
struct listnode *next; //指向下一个节点空间的指针
}list_node,*list_pnode;
4,顺序表和链表特点
1》顺序表
数据连续存储,有利于查找和排序
插入和删除效率太低,需要移动许多数据
存储空间必须提前分配,比较浪费空间
2》链表
数据动态存储,有利于插入和删除
查找和排序效率太低,要通过指针操作数据
数据空间动态分配,不会浪费空间