数据结构
文章平均质量分 53
满山的猴子我的腚最红
这个作者很懒,什么都没留下…
展开
-
文件IO操作
文件IO默认打开了三个文件描述符,分别是 0(标准输入),1(标准输出),2(标准错误)系统自动降低文件权限:mode&(~umask) (不同系统:umask大小不同)操作任意类型的文件b c - l s p 不能操作d。进行操作,非负整数 (>=0),依次分配。没有缓冲机制,每次调用都会引起系统调用。不同进程打开相同文件,文件指针各不相同。读写操作 read write。在系统(posix)关闭文件 close。定位操作 lseek。原创 2023-09-18 12:34:16 · 95 阅读 · 0 评论 -
标准IO函数
标准IO函数标准IO函数查看错误码 vi -t EEXIST打开文件:fopen freopen1)fopen 打开文件a+:初始读指针在文件开始位置,写指针在文件结束位置,如果只调用读指针,那么读指针从刚开始位置后移,一旦调用写指针,读写指针合二为一,读指针去到写指针的位置2)freopen关闭文件:fclose。原创 2023-09-17 23:37:13 · 111 阅读 · 0 评论 -
树型结构 二叉树
若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L-1。二叉树(Binary Tree)是n(n≥0)个节点的有限集合,它或者是空集(n=0), 或者是由一个根节点以及两棵互不相交的、分别称为左子树和右子树的二叉树组成。给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。(2) 在森林中选出两个根结点的权值最小的树合并,作为一棵新树的左、右子树,且新树的根结点权值为其左、右子树根结点权值之和;原创 2023-09-15 09:04:31 · 138 阅读 · 0 评论 -
双向链表doubleLinklist
将新节点的 prior 指针指向直接前驱节点。将直接前驱节点的 next 指针指向新节点。1)创建一个空的双向链表。存储结构:链式存储结构。4)删除确定位置数据。原创 2023-09-14 08:49:05 · 138 阅读 · 0 评论 -
数据结构-链式队列操作
概念逻辑结构:线性结构存储结构:链式存储操作:创建、入列、出列、判空、清空原创 2023-09-13 08:24:48 · 106 阅读 · 0 评论 -
队列及顺序列
答:rear 后面 队尾,在插入的时候,插入之前需要先判断 rear+1,也就是他的下一个为位置是否 等于 front 来判断队列是否为满,会造成浪费一个存储位置。注意:为了避免假溢出问题,即队列前面还有空闲,但是队尾已经出现越界,所以在实际使用队列时,为了使队列空间能重复使用,往往对队列的使用方法稍加改进,需要引入。队列是只允许在两端进行插入和删除操作的线性表,在队尾插入,在队头删除,插入的一端被称为“队尾”,删除的一端被称为“队头”。队列包括顺序队列(循环队列)、链式队列。结构:先进先出FIFO。原创 2023-09-12 12:45:57 · 108 阅读 · 0 评论 -
链式栈操作
存储结构不同,顺序栈是顺序存储,空间连续,用数组构建,也就是用顺序表构建栈。链式栈,链式存储,空间不连续,需要通过指针连接,也就是用链表构建。顺序栈用顺序表实现,链式栈用链表实现。顺序栈的长度受限制,而链式栈不会。操作:创建、入栈、出栈、清空。1)创建一个新的链式栈。7)判断栈有效数据长度。顺序栈和链式栈的区别?2.2 代码操作实现。原创 2023-09-11 08:40:03 · 167 阅读 · 0 评论 -
栈概念及 顺序栈操作
二顺序栈一、概念栈是线性表的一种,但是只能在一端进行插入和删除操作,操作的那一端称为栈顶,另一端称为栈底。如图:特点:先进后出FILO(first in last out)逻辑结构:线性结构储存结构:顺序存储、链式存储二。原创 2023-09-10 12:21:13 · 140 阅读 · 0 评论 -
链表Linklist操作
单向循环链表:约瑟夫环问题,是一个经典的循环链表问题,题意是:已知 n 个人(分别用编号 1,2,3,…顺序表在内存当中连续存储的(数组),但是链表在内存当中是不连续存储的,通过指针将数据链接在一起。删除单向链表中出现的指定数据,data代表将单向链表中出现的所有data数据删除。顺序表查找方便,但是插入和删除效率低,链表,插入和删除方便,查找效率低。思想:用头指针移动到要杀的猴子的前一个,然后跨过指向猴子的节点。删除单向链表中指定位置的数据 post 代表的是删除的位置。合并,形成一个递增有序的新链表。原创 2023-09-09 09:04:33 · 239 阅读 · 0 评论 -
链表Linklist
写一个有头单项链表,用于保存输入的学生成绩,实现一输入学生成绩就创建一个新的节点,将成绩保存起来。再将该节点链接到链表的尾,直到输入-1结束。有头链表:存在一个头节点,(只作为链表开头,不存放数据)数据域无效,指针域有效。要求:每个链表的节点由动态内存分配得到 , 也就是用malloc。解决顺序表中的问题:长度固定和插入删除的麻烦。要把链表的节点连接起来就需要通过指针来操作。无头链表:每一个节点的数据域和指针域都有效。特点:内存中不连续,通过指针链接。存储结构:链式存储结构。将新节点放到链表尾部。原创 2023-09-08 08:13:53 · 182 阅读 · 0 评论 -
顺序表SeqList
顺序表存储数据的具体实现方案是:将数据全部存储到一整块内存空间中,数据元素之间按照次序挨个存放。下划线法:create_empty_seqlist。小驼峰法:createEmptySeqList。大驼峰法:CreateEmptySeqList。放操作顺序表函数文件seqlist.c。查找和修改效率高,删除和插入效率低。插入元素不会增加空间,导致元素丢失。数组操作优化:通过添加全局变量。特点:内存连续,大小是固定的。放主函数的文件main.c。头文件seqlist.h。删除元素不会减少遍历。原创 2023-09-07 08:57:04 · 142 阅读 · 0 评论 -
数据结构基础,算法基础,线性表
数据存储按照和关键码之间的关系进行存取,关系由自己决定,比如关键码是key,存储位置也就是关系是key+1.获取数据,也通过关系位置和关键码key之间的关系来获取。直白的讲,时间复杂度就是把时间规模函数T(n)简化为一个数量级,如n,n^2,n^3。如果有常数项,将其置为1 //当f(n)的表达式中只有常数项的时候,例如f(n)=8 ==> O(1)(4)高效性:算法执行效率,通过重复执行的次数来判断,也就是通过时间复杂度(时间处理函数)来判断。链表(单向列表,单向循环列表,双向列表,双向循环列表)原创 2023-09-06 08:58:41 · 149 阅读 · 0 评论