数据结构之线性表
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,一、概述线性表的顺序表示,特点是逻辑关系上相邻的两个元素物理位置上也相邻,这种数据结构的优点是可以随机读取表中的任意元素;缺点是做插入或者删除时,需要移动大量的元素。与之相对的链式表示,不要求逻辑上相
千家信息网最后更新 2026年11月01日数据结构之线性表
一、概述
线性表的顺序表示,特点是逻辑关系上相邻的两个元素物理位置上也相邻,这种数据结构的优点是可以随机读取表中的任意元素;缺点是做插入或者删除时,需要移动大量的元素。
与之相对的链式表示,不要求逻辑上相连的元素物理位置也相邻,每个元素除了存储其本身的数据之外,还存储了一个指示其后继元素位置的信息。因此在插入和删除时,不需要移动大量的元素,但是也不支持随机读取表中的任意元素。
二、线性链表的实现
#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安全错误
数据库的锁怎样保障安全
小米移动互联网科技园
互联网科技公司经营范围
互联网科技活动banner
互联网科技深圳
互联网巨头反垄断金融科技
金诺互联网科技
互联网科技金融公司
互联网科技logo
广州善班互联网科技
互联网科技公司有哪些
互联网实体化科技化
千方科技属于互联网企业吗
互联网行业科技股
世界互联网领先科技成果获奖
领航科技大厦互联网公司
唯美互联网科技
广州三三互联网科技有限公司
互联网科技大佬云集
东风日产互联网科技公司叫什么
每日互联网科技新闻
互联网科技名片
博彦科技互联网金融
国智互联网科技
青岛互联网科技公司
碳银互联网科技
互联网科技博主是什么意思
央行互联网金融科技公司
重庆互联网医院沙龙医盟信息科技
广州富喜互联网络科技
科技互联网企业在行动