
C语言数据结构
文章平均质量分 57
数据结构概念以及简单的编程举例
孙光祖
电子爱好者,资源分享,设计共享,一起讨论设计。
展开
-
第十三课: C数据结构--队列
什么是队列 队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。在队列这种数据结构中,最先插入的元素将是最先被删除的元素;反之最后插入的元素将最后被删除的元素,因此队列又称为“先进先出”(FIFO—first in first out)的线性表。队列的特征特殊的线性表,先进先出(FIFO).1)数据:对于非空的队列,表头没有直接前驱,表尾没有直接后继,其原创 2021-07-18 18:24:45 · 191 阅读 · 0 评论 -
第十二课: C数据结构--链式栈
链式栈 链式栈是一种数据存储结构,可以通过单链表的方式来实现,使用链式栈的优点在于它能够克服用数组实现的顺序栈空间利用率不高的特点,但是需要为每个栈元素分配额外的指针空间用来存放指针域。链式栈实现函数举例如下:typedef int datatype;typedef struct node{ datatype data; struct node *next;}listnode, *linklist;linklist linkstack_create();int linkstack原创 2021-06-27 20:48:30 · 226 阅读 · 1 评论 -
第十一课: C数据结构—栈
栈栈是在一端进行插入操作和删除操作的线性表(俗称堆栈),允许进行操作的一端称为“栈顶”,另一固定端称为“栈底”,当栈中没有元素称为“空栈”。特点:后进先出(LIFO)。顺序栈:顺序栈是栈的顺序实现。顺序栈是指利用顺序存储结构实现的栈。采用地址连续的存储空间(数组)依次存储栈中数据元素,由于入栈和出栈运算都是在栈顶进行,而栈底位置是固定不变的,可以将栈底位置设置在数组空间的起始处;栈顶位置是随入栈和出栈操作而变化的,故需用一个整型变量top来记录当前栈顶元素在数组中的位置。基本运算:创建空栈:原创 2021-06-27 19:33:45 · 110 阅读 · 0 评论 -
第十课: C数据结构—线性表的应用
线性表的应用多项式表示与相加结点类型描述typedef struct{float coef;int exp;}data_t;typedef struct node_t{data_t data;struct node_t *next;}linknode_t, *linklist;举例请参考下面链接:https://blog.youkuaiyun.com/weixin_42107106/article/details/82817061?ops_request_misc=%257B%2522requ原创 2021-06-27 17:29:57 · 118 阅读 · 0 评论 -
第九课: C数据结构—双向循环链表实现
**双向循环链表实现 ****1、双向循环链表的创建 **typedef struct node{ int data; struct node *prior; struct node *next;}distnode;dlistnode *dlist_create();void dlist_show(distnode *H);dlistnode *dlist_create(){}void dlist_show(distnode *H){}int ma原创 2021-06-27 16:58:38 · 107 阅读 · 0 评论 -
第八课: C数据结构—循环链表及线性表的应用
1、单向循环链表如果把单链表的最后一个节点的指针指向链表头部,而不是指向NULL,那么就构成了一个单向循环链表,通俗讲就是把尾节点的下一跳指向头结点。eg:设ra 和rb分别为两循环链表的尾指针,设计算法,实现表ra和rb的简单连接。2、双向循环链表...原创 2020-08-23 21:24:05 · 265 阅读 · 0 评论 -
第七课: C数据结构—单链表(三)
3、单链表的删除list_delete 删除第I个链表,我们需要先找到他的前一个结点(即他的前驱)。list_delete(linklist H,int pos){ linklist p, q; if(pos == 0) { p = H; } else { p = Getlinklist(H, pos-1); } if(p == NULL || p->next == NULL) {原创 2020-08-09 20:59:08 · 179 阅读 · 0 评论 -
第六课: C数据结构—单链表(二)
1、单链表查找第一种方法按照结点的位置查找;linklist_t GetLinklist(linklist_t h, int pos)linklist_t GetLinklist(linklist_t h, int pos){ int i = 0, j = -1; linklist_t p = h; if(pos < 0) return NULL; while(p->next && i < pos) {原创 2020-08-02 21:33:35 · 137 阅读 · 0 评论 -
第五课: C数据结构—单链表
1、线性表与单链表联系单链表是线性表的一种链式存储结构。2、单链表的结构因为链表是离散存储的,每一个结点之间通过指针来链接。所以要想创建一个非循环单链表,应当首先确定一个头结点,在确定一个尾结点,在中间不断的开辟新的结点并存储相应的内容。注意:本文中提到的头结点中不存储有效数值,尾结点的指针域为空,开辟新节点使用malloc函数实现。为了简便,在数据域中仅仅存储整型数据。开辟后的链表如图所示:线性表的链式存储结构typedef struct node_t{ data_t data;原创 2020-08-02 12:53:17 · 142 阅读 · 0 评论 -
第四课:C数据结构—顺序表实现
1、线性表的顺序存储结构线性表作为一种基本的数据结构类型,在计算机存储器中的映象一般有两种形式,一种是顺序映象,一种是链式映象;2、顺序表的存储特点(1)逻辑上相邻的元素ai,ai+1,其存储位置也是相邻的;(2)对数据元素ai的存取为随机存取或按地址存取;(3)存取密度高。3、顺序存储的实现在C语言中,一维数组中的元素也是存放于一片连续的存储空间中,故可借助于C语言中一维数组类型来描述线性表的顺序存储结构:#definde N 100typedef int data_t;typedef原创 2020-07-26 15:51:39 · 139 阅读 · 0 评论 -
第三课:C数据结构—线性表
1、线性表定义线性表就是零个或多个相同数据元素的有限序列。2、线性表的表示方法线性表记为:L=(D, R)3、线性表特征(1)在非空的线性表,有且仅有一个开始结点a1,它没有直接前趋,而仅有一个直接后继a2;(2)有且仅有一个终端结点an,他没有直接后继,而仅有一个直接前趋an-1;(3)其余的内部结点ai(2in-1)都有且仅有一个直接前趋ai-1和一个直接后继ai+1。4、线性表基本运算(1)构造一个空的线性表L:InitList(&L) 或者CreateList(L);(2原创 2020-07-26 11:59:10 · 306 阅读 · 0 评论 -
第二课:C数据结构—算法的基本概念
1、算法的定义算法是解决特定问题的的步骤的描述,在计算机中算法是一个有穷规则(或语法、指令)的有序集合。2、算法是解决问题的步骤、程序是计算机语言的具体实现。3、数据结构 + 算法 = 程序算法的设计:取决于选定的逻辑结构算法的实现:依赖于采用的存储结构4、算法的特性(1)有穷性(2)确定性(3)可行性(4)输入(5)输出5、算法的分析(1)正确解决问题(2)时间足够短、存储足够小(3)可读性高...原创 2020-07-26 10:40:42 · 660 阅读 · 0 评论 -
第一课:走进C数据结构—数据结构基本概念
1、数据结构的基本概念数据结构是研究组成数据的数据元素的关系的学科。2、数据结构的研究目的通过研究数据元素的关系,帮助我们在开发软件的时候更好的组件数据模型,让数据在内存中的操作更加的流畅高效。逻辑关系 存储关系 运算关系3、数据数据即是信息的载体,是能够输入到计算机中并且能被计算机识别、存储和处理的符号的总称。数据是集合的概念,存在内存的数据。4、数据元素是数据的基本组成单位,又称之为记录。5、数据项数据元素由若干数据项组成,数据项是数据中的最小单位。6、数据类原创 2020-07-26 10:04:05 · 199 阅读 · 0 评论