数据结构之线性表
发表于:2024-11-24 作者:千家信息网编辑
千家信息网最后更新 2024年11月24日,一、概述线性表的顺序表示,特点是逻辑关系上相邻的两个元素物理位置上也相邻,这种数据结构的优点是可以随机读取表中的任意元素;缺点是做插入或者删除时,需要移动大量的元素。与之相对的链式表示,不要求逻辑上相
千家信息网最后更新 2024年11月24日数据结构之线性表
一、概述
线性表的顺序表示,特点是逻辑关系上相邻的两个元素物理位置上也相邻,这种数据结构的优点是可以随机读取表中的任意元素;缺点是做插入或者删除时,需要移动大量的元素。
与之相对的链式表示,不要求逻辑上相连的元素物理位置也相邻,每个元素除了存储其本身的数据之外,还存储了一个指示其后继元素位置的信息。因此在插入和删除时,不需要移动大量的元素,但是也不支持随机读取表中的任意元素。
二、线性链表的实现
#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安全错误
数据库的锁怎样保障安全
中国农业大学软件开发实验室
邹平机械软件开发咨询
软件开发风险与对策
服务器cpu主频高是干嘛用的
幼儿园网络安全法
黑K入侵app数据库
购买服务器之后
临沂服务器管理系统价格
35岁了想做软件开发
服务器安全与防护工作
美国旧金山网络安全会议
网络安全的课题报告
网络安全可以干到多少岁
网络安全宣传周班会内容三年级
数据库崩了应该收多少费用
mc无缘无故被服务器封禁
网络安全策略处置方案
网络安全 隐私泄露
江苏智能软件开发批发价
杭州百颂网络技术
sql数据库中的主码
蔚来软件开发专家
一个软件开发需要
vB6导出数据库字段代码
西安物流软件开发平台
软件开发实施岗
查询数据库数据微信小程序源码
服务器文件拷贝
内蒙古诚信网络技术服务常见问题
软件开发项目延期原因