数据结构 常用定义
2016-03-30 20:46
405 查看
#ifndef _List_H //#ifndef预编译指令,如果没有定义 _List_H,就执行下面 struct Node; //Node 结构体变量声明,就像int a 一样,Node是变量名 typedef struct Node *PtrToNode; //typedef定义,定义新的类型,这种类型的名字叫做PtrToNode,它的类型是指向Node结构体的指针; typedef PtrToNode List; //定义一个链表,其存储的数据格式是Node结构体,名字是List。 typedef ptrToNode Position; //依旧是PtrToNode类型的指针,只不过换了个名字叫Position而已。 List MakeEmpty(List L); int IsEmpty(List L); int IsLast(Position P,List L); position Find(ElementType X,ListL, position P); void DeleteList(List L); int ISlast(Position P); Elementytpe Retrieve(Position P); //上面的N个函数从名字上就可以看出来,是对链表进行操作的函数,分别是 清空链表、检查链表是否为空、检查是否Position指向的是链表的最后一个元素、查找指定元素在链表中的位置、删除链表;至于……呃……最后一个 int ISlast(Position P); ……是你打错了吧…… #endif//预编译指令#ifndef结束。 struct Node { ElementType Element; //C语言是没有这个数据类型的,讲数据结构时,用ElemType泛指指某一种数据类型。#define ElemType int ElemType 就是 int类型的 Position Next; }; //结构体定义,不说了。 这样说或许你还是比较迷糊~其实我也觉得说的蛮迷糊的~ #ifndef的意思是“如果没有定义XXX,就执行下面的代码”,所以很简单,从#ifndef开始到#endif为止中间的内容都是在定义一些代码中要用到的新类型,之所以用#ifndef把他们包含进来,是因为“模块化开发”的思想,在一个软件系统中,这些定义应该是写在.h文件中的,为了防止重复定义,就使用了#ifndef。 typedef struct Node *PtrToNode; typedef PtrToNode List; typedef ptrToNode Position; 第一行定义了一个指向Node结构体的指针类型,这个类型的名字是PtrToNode,也就是说,如果我现在需要定义一个Node*类型的变量,就不用写 Node * pNode; 而写 PtrToNode pNode; 就好了。 第二行定义了一个链表,这个很好理解,空链表只有2种形式,一种是null,另一种是有个“哨兵元素”,它的定义是后者。 第三句同理,依旧是Node*,指向Node结构的指针,只不过又取了个名字叫Position而已。
相关文章推荐
- 数据结构与算法分析
- 数据结构单链表删除相同元素(int)
- 数据结构和算法 – 1.基础排序算法
- 【Redis源码剖析】 - Redis内置数据结构之字典dict
- [数据结构]N-Queens Problem(recursion)
- [数据结构]Stack_Calculator(中序波兰式转后序波兰式)
- [数据结构]双链表模拟网站前进后退
- [数据结构]Polynomial
- [数据结构]Joseph problem(模拟)
- [数据结构]Linked_stack
- [数据结构]Linked_queue
- 《数据结构》 队列(Queue)操作代码集合
- 数据结构 - 简单的单链表结构
- 【暑假】[实用数据结构] AC自动机
- 【暑假】[实用数据结构]UVAlive 3942 Remember the Word
- 【暑假】[实用数据结构]UVAlive 3026 Period
- 【暑假】[实用数据结构]UVAlive 4670 Dominating Patterns
- 【暑假】[基本数据结构]根据BFS与DFS确定树
- 【暑假】[基本数据结构]根据in_order与post_order构树
- 【暑假】[基本数据结构]基本的数据结构知识点总结梳理