数据结构体系图

1.线性表的顺序存储

//<span style="font-size:18px;">线性表顺序存储结构的构建</span>
#include <stdio.h>
#define MaxSize 100
typedef int DataType;typedef struct
{DataType list[MaxSize];int size;
} SeqList;//初始化顺序表L
void ListInitiate(SeqList *L)
{    L->size = 0;      //定义初始数据元素个数
}//返回顺序表L的当前数据元素个数
int ListLength(SeqList L)
{return L.size;
}//在顺序表L的位置i(0≤i≤L.size)前插入数据元素值x,插入成功返回1,插入失败返回0
int ListInsert(SeqList *L, int i, DataType x)
{int j;if(L->size >= MaxSize){printf("顺序表已满无法插入! \n");    return 0; }else if(i < 0 || i > L->size ){printf("参数i不合法! \n");return 0;}else{for(j = L->size+1; j > i; j--) L->list[j] = L->list[j-1];               //为插入做准备L->list[i] = x;                          //插入L->size ++;                          //元素个数加1return 1;}
}//删除顺序表L中位置i(0≤i≤L->size-1)的数据元素值并存放到参数x中,删除成功返回1,删除失败返回0
int ListDelete(SeqList *L, int i, DataType *x)
{ int j;if(L->size == 0){printf("顺序表已空无数据元素可删! \n");return 0;}else if(i <0 || i > L->size-1){printf("参数i不合法");return 0;}else{*x = L->list[i];                  //保存删除的元素到参数x中for(j = i +1; j <= L->size; j++) L->list[j-1] = L->list[j];        //依次前移L->size--;                       //数据元素个数减1return 1;}
}//取顺序表L中第i个数据元素的值存于x中,成功则返回1,失败返回0
int ListGet(SeqList L, int i, DataType *x)
{if(i < 0 || i > L.size-1){printf("参数i不合法! \n");return 0;}else{*x = L.list[i];return 1;}
}

示例——对线性表的操作(增删改查)

#include <stdio.h>
#include <stdlib.h>
#define MaxSize 100
#define ListLenth 50
typedef int DataType;//定义顺序表的类型SeqList
typedef struct
{DataType list[MaxSize];int size;
} SeqList;//初始化数据
void CreList(SeqList *L)
{int i;L->size=50;//顺序表加入数据,依次为0-49for(i=0;i<50;i++){L->list[i]=i;}
}//初始化顺序表*L
void ListInitiate(SeqList *L)
{L->size=0;
}//返回顺序表L的当前数据元素个数
int ListLength(SeqList *L)
{return L->size;
}//查找功能,传参——线性表L和查找元素DataType x,成功返回x在L中的序号否则返回-1
int ListLocate(SeqList L,DataType x)
{int i=0;while(i<L.size&&L.list[i]!=x){i++;}if(i<L.size) return (i);elsereturn (-1);
}//插入功能,传参——线性表L、插入位置i和所插入元素x,成功返回1否则返回0
int ListInsert(SeqList *L,int i,DataType x)
{int j;if(L->size>=MaxSize-1){printf("顺序表已满无法插入!\n");return 0;}else if(i<0||i>L->size+1){printf("参数i不合法!\n");return 0;}else{for(j=L->size;j>i;j--){L->list[j]=L->list[j-1];        //为插入做准备}L->list[i]=x;                    //插入L->size++;                        //元素个数加1return 1;}
}//删除功能,传参——顺序表L、删除元素的序号i和要返回所删除的元素
int ListDelete(SeqList *L,int i,DataType *x)
{int j;if(L->size==0){printf("顺序表已空无数据元素可删!\n");return 0;}else if(i<0||i>L->size-1){printf("参数i不合法!\n");return 0;}else{*x=L->list[i];for(j=i+1;j<L->size;j++){L->list[j-1]=L->list[j];}L->size--;return 1;}
}void ListShow(SeqList L)
{int i;printf("当前List表为\n");for(i=0;i<L.size;i++){printf("%d ",L.list[i]);}printf("\n共%d个元素\n\n",L.size);return ;
}main()
{int i;SeqList L;DataType x;//初始化顺序表L ListInitiate(&L);//初始化顺序表数据为0-49 CreList(&L);//显示链表 ListShow(L);//删除操作 printf("1.删除20位置元素\n");ListDelete(&L,20,&x);printf("所删除元素为:%d\n",x);ListShow(L);//增加操作 printf("2.在1位置插入元素10\n");ListInsert(&L,1,10);ListShow(L);//查询操作 printf("3.查询30在链表中的位置:%d\n",ListLocate(L,30));printf("\n");printf("4.查询20(已删除)在链表中的位置:%d\n",ListLocate(L,20));return 0;
}

运行结果

链表栈队列树图实现: 编程面试的10大算法概念汇总

2.线性表的链式存储

3.队列的顺序存储

4.循环队列的链式存储

5.栈的顺序存储

6.栈的链式存储

7.树的顺序存储

8.树的链式存储

9.图的邻接矩阵表示

数据结构(线性表,队列,栈,树,图)相关推荐

  1. 数据结构之线性表/队列/栈/树

    数据 数据项:一个数据元素可以由若干数据项组成. (一个实体类的一个属性) 数据对象:有相同性质的数据元素的集合,是数据的子集. (该实体类对象) 数据结构:是相互之间存在一种或多种特定关系的数据元素 ...

  2. 数据结构-线性表(栈与队列的特殊性)

    通过前面的介绍我们知道,数据结构按照对应关系可以分为一对一的线性表结构.一 对多的树形结构,多对多的图形结构,以及同属一个集合的集合结构. 在此我们分析一下线性表结构: 对于线性表我们知道有数组.链表 ...

  3. 2021-9-下旬 数据结构-线性表-队列-java代码实现(复习用)

    话说...每次都用现成的类实现,是不是有点偷懒 //队列的本质也是线性表,特性为只在线性表首位端进行操作,为先进先出,和生活中排队的队列是一样的 //队列涉及到的操作主要是入队(enQueue)和出队 ...

  4. 数据结构——线性表知识思维导图

    此博客主要是线性表部分的知识思维导图 便于对线性表这一章节的知识在脑中形成一个知识体系 具体重要代码实现可以点击

  5. Java数据结构(1.1):数据结构入门+线性表、算法时间复杂度与空间复杂度、线性表、顺序表、单双链表实现、Java线性表、栈、队列、Java栈与队列。

    数据结构与算法入门 问题1:为什么要学习数据结构          如果说学习语文的最终目的是写小说的话,那么能不能在识字.组词.造句后就直接写小说了,肯定是不行的, 中间还有一个必经的阶段:就是写作 ...

  6. 数据结构-线性表之用队列实现栈用栈实现队列

    文章目录 **********用队列实现栈 一:思路 二:实现 (1)结构体定义 (2)初始化和销毁 (3)进"栈" (4)出"栈" 三:代码 ******** ...

  7. b+树时间复杂度_数据结构:线性表,栈,队列,数组,字符串,树和二叉树,哈希表...

    作者:张人大 代码效率优化 复杂度 -- 一个关于输入数据量n的函数 时间复杂度 -- 昂贵 与代码的结构设计有着紧密关系 一个顺序结构的代码,时间复杂度是O(1), 即任务与算例个数 n 无关 空间 ...

  8. 数据结构与算法第二章 线性表、栈、队列、数组、字符串、树、二叉树、哈希表的增删查

    03 增删查:掌握数据处理的基本操作,以不变应万变 通过前面课时的学习,相信你已经建立了利用数据结构去完成时空转移的思想.接下来,你需要在理论思想的指导下灵活使用.其实,要想灵活使用数据结构,你需要先 ...

  9. 《大话数据结构》3、4、5线性表、栈与队列、串

    第3章线性表 41 线性表:零个或多个数据元素的有限序列. 3.1开场白 42 门外家长都挤在大门口与门里的小孩子的井然有序,形成了鲜明对比.哎,有时大人的所作所为,其实还不如孩子. 3.2线性表的定 ...

  10. Learning Data Structure_2_线性表、栈和队列

    一个人在学校的日子有些寂寞,但是st说男人要耐得住寂寞,做学问也是如此吧.今天看了线性表.栈和队列的内容.以下是学习记录. 线性表(list) 1.定义:0个或多个数据元素的有限序列,元素有且只有一个 ...

最新文章

  1. Mac NIFI 安装
  2. ARM内核及其设备树编译
  3. Java-利用Spring提供的Resource/ResourceLoader接口操作资源文件
  4. 单脉冲雷达的相干干扰的研究文章_什么是量子纠缠和量子退相干?这个比喻太绝了!...
  5. leetcode 95 python
  6. Linux平台下Ntop流量监测安装,并实现Netflow全过程
  7. RS-232、RS422和RS-485的区别和各自的实现方式
  8. eclipse中出现代码覆盖的颜色信息,如何去掉
  9. IDEA打包失败解决方案
  10. 如何卸载 adobe creative cloud?
  11. 黑马程序员_银行业务调度系统
  12. Win10 使用 Virtual Box 安装 Ubuntu 虚拟机
  13. 软件测试带宽低,性能测试分析之带宽瓶颈的疑惑
  14. 内网端口映射详解(花生壳)
  15. android钢琴软件和弦,‎App Store 上的“判断和弦以钢琴演奏 Piano Chord Judge”
  16. android autojs 群控 脚本,autojs开发群控需要用到的服务器通信协议websocket例子
  17. Intention Driven Life:扎克伯格哈佛演讲节选
  18. Android获取手机应用的版本名和版本号
  19. Android应用开发必备的20条技能清单
  20. 周赛 2019-12-15

热门文章

  1. MOS管栅级一定不能悬空!!!!
  2. 面试杀手锏:SpringBoot是如何实现简化配置的?
  3. 第十一周练习--星座
  4. java 接口 多态 异常
  5. 基于Ogre3d的.NET版本(MOGRE)做的台球游戏
  6. 自适应响应式汽车配件类网站源码 html5高端大气汽车网站织梦模板
  7. 详解Spark运行模式(local+standalone+yarn)
  8. 代码保护软件VMProtect用户手册之内置脚本的使用(2)——PE文件
  9. hp计算机如何进入启动界面,惠普电脑怎么进入bios设置启动项
  10. linux冷备份oracle数据库,Linux余Windows系统Oracle数据库简单冷备同步