线性表

typedef int Position;
typedef struct LNode *List;
struct LNode {ElementType Data[MAXSIZE];Position Last;
};/* 初始化 */
List MakeEmpty()
{List L;L = (List)malloc(sizeof(struct LNode));L->Last = -1;return L;
}/* 查找 */
#define ERROR -1Position Find( List L, ElementType X )
{Position i = 0;while( i <= L->Last && L->Data[i]!= X )i++;if ( i > L->Last )  return ERROR; /* 如果没找到,返回错误信息 */else  return i;  /* 找到后返回的是存储位置 */
}/* 插入 */
/*注意:在插入位置参数P上与课程视频有所不同,课程视频中i是序列位序(从1开始),这里P是存储下标位置(从0开始),两者差1*/
bool Insert( List L, ElementType X, Position P )
{ /* 在L的指定位置P前插入一个新元素X */Position i;if ( L->Last == MAXSIZE-1) {/* 表空间已满,不能插入 */printf("表满"); return false; }  if ( P<0 || P>L->Last+1 ) { /* 检查插入位置的合法性 */printf("位置不合法");return false; } for( i=L->Last; i>=P; i-- )L->Data[i+1] = L->Data[i]; /* 将位置P及以后的元素顺序向后移动 */L->Data[P] = X;  /* 新元素插入 */L->Last++;       /* Last仍指向最后元素 */return true;
} /* 删除 */
/*注意:在删除位置参数P上与课程视频有所不同,课程视频中i是序列位序(从1开始),这里P是存储下标位置(从0开始),两者差1*/
bool Delete( List L, Position P )
{ /* 从L中删除指定位置P的元素 */Position i;if( P<0 || P>L->Last ) { /* 检查空表及删除位置的合法性 */printf("位置%d不存在元素", P ); return false; }for( i=P+1; i<=L->Last; i++ )L->Data[i-1] = L->Data[i]; /* 将位置P+1及以后的元素顺序向前移动 */L->Last--; /* Last仍指向最后元素 */return true;
}

链表

 1 typedef struct LNode *PtrToLNode;
 2 struct LNode {
 3     ElementType Data;
 4     PtrToLNode Next;
 5 };
 6 typedef PtrToLNode Position;
 7 typedef PtrToLNode List;
 8
 9 /* 查找 */
10 #define ERROR NULL
11
12 Position Find( List L, ElementType X )
13 {
14     Position p = L; /* p指向L的第1个结点 */
15
16     while ( p && p->Data!=X )
17         p = p->Next;
18
19     /* 下列语句可以用 return p; 替换 */
20     if ( p )
21         return p;
22     else
23         return ERROR;
24 }
25
26 /* 带头结点的插入 */
27 /*注意:在插入位置参数P上与课程视频有所不同,课程视频中i是序列位序(从1开始),这里P是链表结点指针,在P之前插入新结点 */
28 bool Insert( List L, ElementType X, Position P )
29 { /* 这里默认L有头结点 */
30     Position tmp, pre;
31
32     /* 查找P的前一个结点 */
33     for ( pre=L; pre&&pre->Next!=P; pre=pre->Next ) ;
34     if ( pre==NULL ) { /* P所指的结点不在L中 */
35         printf("插入位置参数错误\n");
36         return false;
37     }
38     else { /* 找到了P的前一个结点pre */
39         /* 在P前插入新结点 */
40         tmp = (Position)malloc(sizeof(struct LNode)); /* 申请、填装结点 */
41         tmp->Data = X;
42         tmp->Next = P;
43         pre->Next = tmp;
44         return true;
45     }
46 }
47
48 /* 带头结点的删除 */
49 /*注意:在删除位置参数P上与课程视频有所不同,课程视频中i是序列位序(从1开始),这里P是拟删除结点指针 */
50 bool Delete( List L, Position P )
51 { /* 这里默认L有头结点 */
52     Position tmp, pre;
53
54     /* 查找P的前一个结点 */
55     for ( pre=L; pre&&pre->Next!=P; pre=pre->Next ) ;
56     if ( pre==NULL || P==NULL) { /* P所指的结点不在L中 */
57         printf("删除位置参数错误\n");
58         return false;
59     }
60     else { /* 找到了P的前一个结点pre */
61         /* 将P位置的结点删除 */
62         pre->Next = P->Next;
63         free(P);
64         return true;
65     }
66 }

链表

转载于:https://www.cnblogs.com/cnblogs-xiaoqi/p/11253203.html

数据结构学习官方代码相关推荐

  1. 【数据结构学习之完全从零实现所有数据结构的代码编写之一】泛型编程简介

    学习交流加 个人qq: 1126137994 个人微信: liu1126137994 学习交流资源分享qq群: 962535112 今天开始系统性学习数据结构内容,之前也看过大话数据结构这本书,对大多 ...

  2. 【三维视觉】【深度学习】ubuntu18.04下PointNet官方代码Pytorch实现

    [三维视觉][深度学习]ubuntu18.04下PointNet官方代码Pytorch实现 提示:最近开始在三维深度学习方面进行研究,记录相关知识点,分享学习中遇到的问题已经解决的方法. 文章目录 [ ...

  3. 数据结构学习工具总结

    图解程序员画流程图.数据结构图及各种复杂图形的Graphviz工具入门 http://blog.csdn.net/jin13277480598/article/details/51305674 安装G ...

  4. 解读阿里官方代码规范

    2017年开春,阿里对外公布了「阿里巴巴Java开发手册」从头到尾浏览了一遍这份手册之后,感觉很棒.虽然其中的某些观点笔者不能苟同,但大部分的规范还是值得绝大多数程序员学习和遵守的. 笔者将对这份代码 ...

  5. GitHub 官方代码扫描工具上线!

    点击上方 Java后端,选择 设为星标 优质项目,及时送达 作者:蛋酱:本文经机器之心(微信公众号:almosthuman2014)授权转载,禁止二次转载. 在 GitHub 发布项目之前,你可以用免 ...

  6. 数据结构学习系列文章合集

    数据结构学习系列文章目录 前言 1.稀疏数组和队列 稀疏数组和二位数组的转换 数组队列的实现 环形队列的介绍与实现 2.链表 单链表的增.删.改.查 总结 前言 学习数据结构记录,作为自己的笔记,同时 ...

  7. 如何高效的学习TensorFlow代码?

    如何高效的学习TensorFlow代码? 如题,或者如何掌握TensorFlow,应用到任何领域? 添加评论分享 10 个回答 爱琳李,老李,明天就辍学了 8 人赞同 本来都忘了这个问题了,不过看到很 ...

  8. 【杂谈】野生在左 科班在右——数据结构学习誓师贴

    [杂谈]野生在左 科班在右--数据结构学习誓师贴 一. 科班 Vs 野生 这个老生常谈的问题让很多野生码农觉得不公平,在一次次面试中因为学历和那些工作中根本就用不到的知识虐的一脸懵逼,然后除了抱怨什么 ...

  9. C语言数据结构学习用单元测试

    药物名称: C语言数据结构学习用单元测试 主治: 本品是基于CUnit编写的.全部的.纯C的数据结构(ADT)各种实现的单元测试.主治基础不牢,水品增长缓慢.建议配合严蔚敏<数据结构>(C ...

最新文章

  1. Java 调用Oracle的存储过程
  2. Android实训日志:基于外部存储卡的音乐播放器V02
  3. Gym导入Atari游戏环境报错
  4. vue html绑定数组,VueJs Class 与 Style 绑定 数组语法
  5. 全志 移除屏幕超时选项 Patch
  6. kubernetes1.8.4安装指南 -- 2. ssh免密登录
  7. traceroute命令的用法实例
  8. Java ObjectStreamClass lookup()方法与示例
  9. 基于Ant Design UI框架的React项目
  10. 没有完美,一切只是角度
  11. 【软件测试】α测试和β测试的区别
  12. Docker详解(二)——Docker技术原理与架构
  13. 07. 用两个栈实现队列(C++版本)
  14. 数据库系统原理与应用教程(019)—— MySQL 的配置文件
  15. 以太坊Ghost协议
  16. KDD CUP 99 数据集解析、挖掘与下载
  17. 浅谈GFS之---读写文件流程
  18. 风场可视化:绘制粒子
  19. python文字编辑器推荐_推荐5个常用的文本编辑器
  20. Unity2D平台开发

热门文章

  1. Mac下好用的取色器 Sip
  2. js函数的内部属性---arguments,callee,caller
  3. 索尼电脑娱乐(SCE)公司周一宣布
  4. Win7开发系列: Win7 UAC帮助类
  5. 做好MSSQL保卫战之xp_cmdshell
  6. Every column needs a corresponding expression. No expression found for xxxx
  7. Flink数据清洗(Kafka事实表+Redis维度表)
  8. anaconda在ubuntu19.10下面安装python3.6和python2.7+更换国内源+一键切换配置
  9. seaborn绘图后得到分布参数
  10. 【数学基础】拉格朗日对偶