数据结构之线性表
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,一、概述线性表的顺序表示,特点是逻辑关系上相邻的两个元素物理位置上也相邻,这种数据结构的优点是可以随机读取表中的任意元素;缺点是做插入或者删除时,需要移动大量的元素。与之相对的链式表示,不要求逻辑上相
千家信息网最后更新 2025年12月02日数据结构之线性表
一、概述
线性表的顺序表示,特点是逻辑关系上相邻的两个元素物理位置上也相邻,这种数据结构的优点是可以随机读取表中的任意元素;缺点是做插入或者删除时,需要移动大量的元素。
与之相对的链式表示,不要求逻辑上相连的元素物理位置也相邻,每个元素除了存储其本身的数据之外,还存储了一个指示其后继元素位置的信息。因此在插入和删除时,不需要移动大量的元素,但是也不支持随机读取表中的任意元素。
二、线性链表的实现
#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安全错误
数据库的锁怎样保障安全
央美软件开发
网络技术三级有课本吗
辽宁智慧党建软件开发电话
网络安全教育电子稿板
本地连接 服务器数据库
上海的开票软件里接入服务器地址
浪潮服务器怎么开启bios密码
数据库例题专升本
网络安全教育英语短语
服务器怎么一直保持管理员
吉林大学研究生网络安全专业
操作数据库每次检索多少条数据
中兴软件开发南京岗位怎么样
普通电脑可以做小程序服务器吗
网络安全法新亮点
未来风科技互联网ppt
北京快递软件开发公司
软件开发出国好不好
郑州网络安全科技馆的意义
宝山区市场软件开发诚信经营
上汽大众软件开发中心
网络安全是不是网络信息系统
邮政网络安全事件
客运大巴车软件开发
达索软件开发公司
中队主题活动记录网络安全
益阳打车软件开发
我的世界斗罗封神服务器QQ群号
长沙中兴软件开发
吴中区智能化软件开发系统