数据结构之线性表
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,一、概述线性表的顺序表示,特点是逻辑关系上相邻的两个元素物理位置上也相邻,这种数据结构的优点是可以随机读取表中的任意元素;缺点是做插入或者删除时,需要移动大量的元素。与之相对的链式表示,不要求逻辑上相
千家信息网最后更新 2025年01月31日数据结构之线性表
一、概述
线性表的顺序表示,特点是逻辑关系上相邻的两个元素物理位置上也相邻,这种数据结构的优点是可以随机读取表中的任意元素;缺点是做插入或者删除时,需要移动大量的元素。
与之相对的链式表示,不要求逻辑上相连的元素物理位置也相邻,每个元素除了存储其本身的数据之外,还存储了一个指示其后继元素位置的信息。因此在插入和删除时,不需要移动大量的元素,但是也不支持随机读取表中的任意元素。
二、线性链表的实现
#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安全错误
数据库的锁怎样保障安全
浙江电商外贸软件开发
网络安全哪个大学开设
服务器带云硬盘200g
商业银行信贷数据库建设成本高
网络安全日常教育
计算机类软件开发参考文献
洛阳赛格网络技术有限公司
大数据和网络安全哪个好就业
怎么访问网页版的数据库
索引是数据库物理范畴吗
服务器管理器需要怎么设置
资源库与数据库的区别
it梦幻软件开发
申请软件开发硕士
软件开发工程师和算法哪个好
宝山区创新软件开发协议
山东软件开发有什么途径
班会稿网络安全
吉林服务器机柜咨询报价
如何架设git服务器
西安汇为网络技术有限公司
深圳市科尔网络技术有限公司
智慧医疗网络安全
360软件开发者工具下载
数据库技术能做兼职吗
钢铁行业数据库加密价格
鞋尺寸数据库
网络安全测评公司资质
通信工程网络安全课
蓝桥杯大赛java软件开发