数据结构之线性表
发表于:2025-02-19 作者:千家信息网编辑
千家信息网最后更新 2025年02月19日,一、概述线性表的顺序表示,特点是逻辑关系上相邻的两个元素物理位置上也相邻,这种数据结构的优点是可以随机读取表中的任意元素;缺点是做插入或者删除时,需要移动大量的元素。与之相对的链式表示,不要求逻辑上相
千家信息网最后更新 2025年02月19日数据结构之线性表
一、概述
线性表的顺序表示,特点是逻辑关系上相邻的两个元素物理位置上也相邻,这种数据结构的优点是可以随机读取表中的任意元素;缺点是做插入或者删除时,需要移动大量的元素。
与之相对的链式表示,不要求逻辑上相连的元素物理位置也相邻,每个元素除了存储其本身的数据之外,还存储了一个指示其后继元素位置的信息。因此在插入和删除时,不需要移动大量的元素,但是也不支持随机读取表中的任意元素。
二、线性链表的实现
#includetypedef struct Node { int data; struct Node * next;} Node;int initLinkList(Node *node) { node->data = 0; node->next = NULL; return 0;}int getLinkListLen(Node *node){ int i = 0; for (i=0; node->next != NULL; i++) { node = node -> next; } return i;}int getLinkListElm(Node *node, int num, int * data){ int i = 0; int len; len = getLinkListLen(node); if (num > len) { printf("the number exceed link list lenth\n"); return -1; } for (i=0; i next; } *data = node->data; return 0;}int insertLinkList(Node *node, int num, int *data){ int i = 0; int len; Node * newNode = (Node *)malloc(sizeof(Node)); newNode->data = *data; newNode->next = NULL; len = getLinkListLen(node); if (num > len) { printf("the number exceed link list lenth\n"); return -1; } for (i=0; i next; } newNode->next = node->next; node->next = newNode; return 0;}int delLinkList(Node *node, int num){ int i = 0; int len = 0; Node *delNode = (Node *)malloc(sizeof(Node)); len = getLinkListLen(node); if (num > len) { printf("the number exceed link list lenth\n"); return -1; } for (i=0; i next; } delNode = node->next; node -> next = delNode -> next; free(delNode); return 0;}void printLinkList(Node *node){ int i = 0; for (i=0; node->next != NULL; i++) { printf("%d ", node->next->data); node = node->next; } printf("\n");}int main(int argc, char argv[]){ testInsertLinkList(); testDelLinkList(); testGetLinkListElm(); return 0;}void testInsertLinkList(){ Node *node = (Node *)malloc(sizeof(Node)); initLinkList(node); int num = 8; insertLinkList(node, 0, &num); printf("the link list should be: 8, and it is: "); printLinkList(node); num = 9; insertLinkList(node, 0, &num); printf("the link list should be: 9 8, and it is: "); printLinkList(node); num = 1; insertLinkList(node, 2, &num); printf("the link list should be: 9 8 1, and it is: "); printLinkList(node);}void testDelLinkList(){ Node *node = (Node *)malloc(sizeof(Node)); initLinkList(node); int num = 8; insertLinkList(node, 0, &num); num = 9; insertLinkList(node, 0, &num); num = 122; insertLinkList(node, 1, &num); printf("the link list should be: 9 122 8, and it is: "); printLinkList(node); delLinkList(node, 1); printf("the link list should be: 122 8, and it is: "); printLinkList(node); }void testGetLinkListElm(){ int data = 0; Node *node = (Node *)malloc(sizeof(Node)); initLinkList(node); int num = 8; insertLinkList(node, 0, &num); getLinkListElm(node, 1, &data); printf("data should be 8, and it is: %d\n", data); num = 9; insertLinkList(node, 1, &num); num = 10; insertLinkList(node, 2, &num); getLinkListElm(node, 3, &data); printf("data should be 10, and it is: %d\n", data);}
元素
位置
数据
线性
物理
逻辑
存储
移动
数据结构
结构
两个
优点
信息
指示
特点
缺点
顺序
链式
支持
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发相关技术参考文献
广州安卓软件开发价格表
何谓河南软件开发
管家婆数据库字段
sun服务器如何查看路由信息
挑战网络安全监管
教孩子网络安全教育
代理服务器 app
媒体应用技术与数据库
多个数据库怎么控制事务
csgo查当前服务器指令
戴尔服务器电源
征文网络安全伴我行
中国网络安全会议
小型主机与小型服务器的区别
网络安全知识宣传横幅
怎么评价新华三网络安全大赛
db2数据库出现问题
呼吸系统数据库有哪些
互联网融通科技产业创建
章丘城管通软件开发系统
关注网络安全的知识
自动化网络安全学习收费吗
挑战网络安全监管
odbc 创建数据库窗体
从数据库中调取书籍价格
pg数据库密码保存在哪
无锡赫名网络技术有限公司
服务器 硬件 配置
浦东新区项目数据库服务价格查询