
C语言
文章平均质量分 70
孙光祖
电子爱好者,资源分享,设计共享,一起讨论设计。
展开
-
第十三课: C数据结构--队列
什么是队列 队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。在队列这种数据结构中,最先插入的元素将是最先被删除的元素;反之最后插入的元素将最后被删除的元素,因此队列又称为“先进先出”(FIFO—first in first out)的线性表。队列的特征特殊的线性表,先进先出(FIFO).1)数据:对于非空的队列,表头没有直接前驱,表尾没有直接后继,其原创 2021-07-18 18:24:45 · 191 阅读 · 0 评论 -
第十一课: C数据结构—栈
栈栈是在一端进行插入操作和删除操作的线性表(俗称堆栈),允许进行操作的一端称为“栈顶”,另一固定端称为“栈底”,当栈中没有元素称为“空栈”。特点:后进先出(LIFO)。顺序栈:顺序栈是栈的顺序实现。顺序栈是指利用顺序存储结构实现的栈。采用地址连续的存储空间(数组)依次存储栈中数据元素,由于入栈和出栈运算都是在栈顶进行,而栈底位置是固定不变的,可以将栈底位置设置在数组空间的起始处;栈顶位置是随入栈和出栈操作而变化的,故需用一个整型变量top来记录当前栈顶元素在数组中的位置。基本运算:创建空栈:原创 2021-06-27 19:33:45 · 110 阅读 · 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 · 136 阅读 · 0 评论 -
第五课: C数据结构—单链表
1、线性表与单链表联系单链表是线性表的一种链式存储结构。2、单链表的结构因为链表是离散存储的,每一个结点之间通过指针来链接。所以要想创建一个非循环单链表,应当首先确定一个头结点,在确定一个尾结点,在中间不断的开辟新的结点并存储相应的内容。注意:本文中提到的头结点中不存储有效数值,尾结点的指针域为空,开辟新节点使用malloc函数实现。为了简便,在数据域中仅仅存储整型数据。开辟后的链表如图所示:线性表的链式存储结构typedef struct node_t{ data_t data;原创 2020-08-02 12:53:17 · 140 阅读 · 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 · 138 阅读 · 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 · 305 阅读 · 0 评论 -
第二课:C数据结构—算法的基本概念
1、算法的定义算法是解决特定问题的的步骤的描述,在计算机中算法是一个有穷规则(或语法、指令)的有序集合。2、算法是解决问题的步骤、程序是计算机语言的具体实现。3、数据结构 + 算法 = 程序算法的设计:取决于选定的逻辑结构算法的实现:依赖于采用的存储结构4、算法的特性(1)有穷性(2)确定性(3)可行性(4)输入(5)输出5、算法的分析(1)正确解决问题(2)时间足够短、存储足够小(3)可读性高...原创 2020-07-26 10:40:42 · 657 阅读 · 0 评论 -
第一课:走进C数据结构—数据结构基本概念
1、数据结构的基本概念数据结构是研究组成数据的数据元素的关系的学科。2、数据结构的研究目的通过研究数据元素的关系,帮助我们在开发软件的时候更好的组件数据模型,让数据在内存中的操作更加的流畅高效。逻辑关系 存储关系 运算关系3、数据数据即是信息的载体,是能够输入到计算机中并且能被计算机识别、存储和处理的符号的总称。数据是集合的概念,存在内存的数据。4、数据元素是数据的基本组成单位,又称之为记录。5、数据项数据元素由若干数据项组成,数据项是数据中的最小单位。6、数据类原创 2020-07-26 10:04:05 · 198 阅读 · 0 评论 -
深入浅出C语言内存管理用法
C语言中定义了4个内存区间:代码区/全局变量与静态变量区/局部变量区即栈区/动态存储区,即堆区。代码区: 程序被操作系统加载到内存的时候,所有的可执行代码(程序代码指令、常量字符串等)都加载到代码区,这块内存在程序运行期间是不变的。代码区是平行的,里面装的就是一堆指令,在程序运行期间是不能改变的。函数也是代码的一部分,故函数都被放在代码区,包括main函数。静态区 静态区存放程序中所有的全局变量和静态变量。栈区 栈(stack)是一种先进后出的内存结构,所有的自动变量、函数形参都存储在栈中,原创 2020-07-19 16:50:17 · 180 阅读 · 0 评论 -
c语言中共用体及typedef用法
1、共用体的定义 通过前面的讲解,我们知道结构体(Struct)是一种构造类型或复杂类型,它可以包含多个类型不同的成员。在C语言中,还有另外一种和结构体非常类似的语法,叫做共用体(Union),它的定义格式为:union 共用体名{ 成员列表};共用体有时也被称为联合或者联合体,这也是 Union 这个单词的本意。结构体和共用体的区别在于:结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。结构体占用的内存...原创 2020-07-19 13:32:44 · 772 阅读 · 0 评论 -
c语言中的结构体定义和常见用法
1、结构体简述和概念 结构体是C语言中一种重要的数据类型,该数据类型由一组称为成员(或称为域,或称为元素)的不同数据组成,其中每个成员可以具有不同的类型。结构体通常用来表示类型不同但是又相关的若干数据。结构体类型不是由系统定义好的,而是需要程序设计者自己定义的。C语言提供了关键字struct来标识所定义的结构体类型。2、结构体的定义3、Example4、特点5、注意点...原创 2020-07-19 12:09:22 · 9661 阅读 · 0 评论 -
GCC编译器用法常见错误及过程 介绍
1、Gcc最基本的用法是∶gcc [options] [filenames] 其中options就是编译器所需要的参数,filenames给出相关的文件名称。-c,只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件。-o output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。 eg: gcc -o test原创 2020-07-19 10:33:57 · 1604 阅读 · 0 评论