C学生管理系统单链表和文件操作通用框架手工原创,C语言个人技术总结,全网最规范
2025/3/21 19:10:51 2KB C 链表 学生管理系统
1
题目:7.集合运算(单循环链表)1.问题描述:设有两个带头结点的单循环链表存储的集合A、B,其元素类型为字符或者整形,且以非递减方式存储,其头结点分别为ha、hb。
要求下面各问题中的结果集合同样以非递减方式存储,结果集合不影响原集合。
2.实现要求:⑶编写集合元素测试函数IN_SET,如果元素已经在集合中返回0,否则返回1;
⑷编写集合元素输入并插入到单链表中的函数INSERT_SET,保证所输入的集合中的元素是唯一且以非递减方式存储在单循环链表中;
⑶编写求集合A、B的交C=A∩B的函数,并输出集合C的元素;
⑷编写求集合A、B的并D=A∪B的函数,并输出集合D的元素;
⑸求集合A与B的对称差E=(A-B)∪(B-A)的函数,并输出集合D的元素;
⑹设计一个菜单,具有输入集合元素、求集合A、B的交C、求集合A、B的并D、求集合A与B的对称差E、退出等基本的功能。
3.测试数据:字符型和整形由同学们自定,但集合A、B的元素个数不得少于15个。
2025/3/20 4:44:03 374KB 数据结构
1
选题四:仓库管理系统(输入、输出、插入、删除、查找、增加、统计等)。
题目描述编写一个程序来管理仓库的货物,系统能实现以下功能:输入信息:产品信息的输入;
修改信息:对产品信息进行添加、删除与修改;
查询:能够根据产品号或产品名查询某个产品的信息;
输出:输出所有产品信息或查询产品信息的结果。
报表输出:根据库存数据产生月报表。
设计提示1)先确定仓库中产品信息的数据结构。
如各种产品的信息:产品号、产品名、单价、数量、入库时间、出库时间……等,每个数据项各用什么数据类型;
2)划分实现仓库管理的功能模块:如主菜单、输入数据、修改、查询、输出等功能,并确定各功能模块的实现算法。
3)画出各模块的流程图或S-R图;
4)选择C语言的技术:普通数组、结构体数组、函数、指针、单链表或文件等。
5)编写程序代码。
1
B树的删除.swfB树的生长过程.swf三元组表的转置.swf中序线索化二叉树.swf串的顺序存储.swf二分查找.swf二叉排序树的删除.swf二叉排序树的生成.swf二叉树的建立.swf克鲁斯卡尔算法构造最小生成树.swf冒泡排序.swf分块查找.swf单链表结点的删除.swf单链表结点的插入.swf图的深度优先遍历.swf基数排序.swf堆排序.swf头插法建单链表.swf寻找中序线索化二叉树指定结点的前驱.swf寻找中序线索化二叉树指定结点的后继.swf尾插法建表.swf希儿排序.swf开放定址法建立散列表.swf循环队列操作演示.swf快速排序.swf拉链法创建散列表.swf拓扑排序.swf最短路径.swf朴素串匹配算法过程示意.swf构造哈夫曼树的算法模拟.swf构造哈夫曼树过程.swf栈与递归.swf树、森林和二叉树的转换.swf桶式排序法.swf直接插入排序.swf直接选择排序.swf规并排序.swf邻接表表示的图的广度优先遍历.swf邻接表表示的图的深度优先遍历.swf顺序查找.swf顺序栈(4个存储空间).swf顺序栈(8个存储空间).swf顺序表的删除运算.swf顺序表的插入.swf顺序队列操作.swf
2025/1/18 22:04:36 939KB 数据结构 算法 Flash
1
从文本文件中读取数据并自动建立单链表另一个完整的程序http://download.csdn.net/source/3198575VC++6.0环境下编译通过
2024/12/16 8:48:58 891B 数据 读取 txt 链表
1
对即将找工作的大学生,研究生都爱刷leetcode的题目,但是刚刚接受无法适从,或是一时半会儿想不到解法,没关系,leetcode题解PDF可一带你慢慢了解思路过程。
目录3.4Addbinary615.1.5BinaryTreeLevelOr-3.5LongestPalindromicSubstring.62dertraversalil3.6RegularExpressionMatching665.1.6BinaryTreeZigzag3.7WildcardMatching67LevelOrdertraversal.963.8LongestCommonPrefix5.1.7RecoverBinarySearch3.9ValidNumber70Tree983.10Integertoroman725.1.8SameTree3.11RomantoInteger5.1.9SymmetricTree1013.12CountandSay745.1.10BalancedBinaryTree..1023.13Anagrams755.1.11FlattenBinaryTreeto3.14SimplifyPath76LinkedList1033.15LengthofLastWord775.1.12PopulatingNextRightPointersineachnodeii105第4章栈和队列7952二叉树的构建1074.1栈795.2.1ConstructBinaryTree4ValidParentheses79fromPreorderandIn4.1.2LongestvalidParenorderTraversatheses805.2.2ConstructBinaryTree4.1.3LargestRectangleinfromInorderandposHistogram82torderTraversal1084.14Evaluatereversepol-53二叉查找树109ishnotation845.3.1UniqueBinarySearch4,2队列85Trees5.3.2UniqueBinarySearch第5章树86Treesli.1105.1二叉树的遍历865.3.3ValidateBinarySearch5.1.1BinaryTreePreorderTreeTraversal865.3.4ConvertSortedarrayto5.1.2BinaryTreeInorderBinarySearchTreel12Traversal885.3.5ConvertSortedListto5.1.3BinaryTreePostorderBinarysearchtree113Traversal9054二叉树的递归1155.1.4BinaryTreeLevelOr5.4.1MinimumDepthofBidertraversalnarylree115目录5.4.2MaximumDepthofBi8.32重新实现nextpermunaryTree116tation1425.4.3PathSum117833递归.1435.44PathSumil1188.4PermutationsII1445.4.5BinaryTreeMaximum8.4.1nextpermutation...144PathSuum119842重新实现nextpermu5.4.6PopulatingNextRighttation144Pointersineachnode12084.3递归1445.4.7SumRoottoLeafNum8.5Combinations146bers122851递归146852迭代147第6章排序1238.6LetterCombinationsofaphone6.1MergeSortedArray123umber1476.2MergeTwoSortedLists12486.1递归1486.3MergekSortedLists124862迭代96.4InsertionSortList125第9章广度优先搜索1506.5Sortlist1269.1WordLadder1506.6FirstMissingPositive1279.2WordLadderil..1526.7SortColors289.3Surroundedregions154第7章查找94小结15613194.1适用场景1567.1Searchforarange131942思考的步骤.1567.2SearchInsertPosition.13294.3代码模板1577.3Searcha2DMatrix133第10章深度优先搜索162第8章暴力枚举法13510.1PalindromePartitioning..1628.1Subsets13510.2UniquePaths1658.1.1递归1350.2.1深搜1658.1.2迭代.13710.22备忘录法.1658.2Subsetsil13810.23动规166821递归1381024数学公式167822迭代.14110.3UniquePathsIl1688.3Permutations14210.3.1备忘录法1688.3.1nextpermutation14210.3.2动规.169目录10.4N-Queens16913.4Maximalrectangle19910.5N-QueensII17213.5BestTimetoBuyandSellStock10.6Restoreipaddresses17320010.7CombinationSum17413.6InterleavingString20110.8CombinationSumIl17513.7ScrambleString20310.9GenerateParentheses.17713.8MinimumPathSum20810.10Sudokusolver17813.9EditDistance21010.11WordSearch.18013.10DecodeWays.21210.12小结18113.11DistinctSubsequences21310.12.1适用场景1813.12WordBreak21410.122思考的步骤1811313WordBreakil21610.12.3代码模板183第14章图21810.12.4深拽与回溯法的区别.18414.1CloneGraph10.12.5深搜与递归的区别..184第15章细节实现题221第11章分治法18515.1ReverseInteger2211.1Pow(x,n)18515.2PalindromeNumber222qrt(x18615.3InsertInterval223第12章贪心法18715.4MergeIntervals22412.1Jumpgame18715.5MinimumWindowSubstring..22512.2JumpgameIl18815.6MultiplyStrings22712.3BestTimetobuyandsellstock19015.7SubstringwithConcatenation12.4BestTimetobuyandsellstock191ofallwords23012.5LongestSubstringWithoutre15.8Pascal,sTrianglepeatingCharacters19215.9PascalsTriangleIl23212.6ContainerwithmostWater.19315.10Spiralmatrix23315.11SpiralmatrixII234第13章动态规划19515.12ZigZagConversion23613.1Triangle19515.13DivideTwoIntegers23713.2MaximumSubarray19615.14TextJustification23813.3PalindromePartitioningII19815.15MaxPointsonaline目录第1章编程技巧在判断两个浮点数a和b是否相等时,不要用a=-b,应该判断二者之差的绝对值fabs(a-b)是否小于某个阈值,例如1e-9。
判断一个整数是否是为奇数,用x%2!=0,不要用x%2==1,因为x可能是负数用char的值作为数组下标(例如,统计字符串中每个字符出现的次数),要考虑到char可能是负数。
有的人考虑到了,先强制转型为unsignedint再用作下标,这仍然是错的。
正确的做法是,先强制转型为unsignedchar,再用作下标。
这涉及C++整型提升的规则,就不详述了。
以下是关于STL使用技巧的,很多条款来自《EffectiⅤveStL》这本书。
vector和string优先于动态分配的数组首先,在性能上,由于vector能够保证连续内存,因此一旦分配了后,它的性能跟原始数组相当其次,如果用new,意味着你要确保后面进行了delete,一旦忘记了,就会岀现BUG,且这样需要都写一行delete,代码不够短再次,声明多维数组的话,只能一个一个new,例如:int**ary=newint*[row_num];for(inti=0:i<rownum;++1)ary[i]newint[col_num]用vector的话一行代码搞定,vector<vector<int>>ary(row_num,vector<int>(col_num,0))使用reserve来避免不必要的重新分配第2章线性表这类题目考察线性表的操作,例如,数组,单链表,双向链表等。
21数组2.1.1RemoveDuplicatesfromSortedarray描述Givenasortedarray,removetheduplicatesinplacesuchthateachelementappearonlyonceandreturnthenewlengthDonotallocateextraspaceforanotherarray,youmustdothisinplacewithconstantmemoryForexample,GiveninputarrayA=[1,1,2Yourfunctionshouldreturnlength=2,andaisnow[1,2]分析无代码1/LeetCode,RemoveDuplicatesfromSortedArray/时间复杂度0(n),空间复杂度0(1)classSolutiontublicintremoveDuplicates(intA[],intn)tlf(n==oreturnointindex=0:for(inti=1:i<n:i++iif(Alindex!alidA[++index]=Alireturnindex12.1数组代码2//LeetCode,RemoveDuplicatesfromSortedArray//使用STL,时间复杂度0(n),空间复杂度0(1)classSolutionipublicintremoveDuplicates(intA[,intn)treturndistance(A,unique(A,An))代码3/LeetCode,RemoveDuplicatesfromSortedArray/使用STL,时间复杂度0(n),空间复杂度0(1)lassSolutionfublicintremoveDuplicates(intA[],intn)treturnremoveDuplicates(A,A+n,A)-A;template<typenameInIt,typenameoutit>OutItremoveDuplicates(InItfirst,InItlast,OutItoutput)thile(firstlast)i*output++=*firstfirstupper_bound(first,last,*firstreturnoutput相关题目RemoveduplicatesfromSortedArrayIl,见§2.1.22.1.2RemoveDuplicatesfromSortedArrayII描述Followupfor"RemoveDuplicates"Whatifduplicatesareallowedatmosttwice?Forexample,Givensortedarraya=[1,1,1,2,2,3]Yourfunctionshouldreturnlength=5,andAisnow[1,1,2,2,3分析加一个变量记录一下元素出现的次数即可。
这题因为是已经排序的数组,所以一个变量即可解决。
如果是没有排序的数组,则需要引入一个hashmap来记录出现次数4第2章线性表代码1//LeetCode,RemoveDuplicatesfromSortedArrayII/时间复杂度0(n),空间复杂度0(1)//qauthorhex108(https://github.com/hex108)classSolutiontublicintremoveDuplicates(intA[],intn)tlf(n<=2returnnintindex=2for(inti=2:in:1++)if(all]!Alindex-2])ALindex++]=Ali]returnindex;代码2下面是一个更简洁的版本。
上面的代码略长,不过扩展性好一些,例如将occur<2改为ocur<3,就变成了允许重复最多3次。
//LeetCode,RemoveDuplicatesfromSortedArrayII//@author虞航仲(http://weibo.com/u/1666779725)//时间复杂度0(n),空间复杂度0(1)classSolutionipublicintremoveDuplicates(intA[],intn)tmtindex=ofor(intif(i>0&&i<1&&A[i]==A[i-1]&&A[i]==A[i+1])continueAlindex++]=Alireturnindex;相关题目RemoveDuplicatesfromSortedArray,见§2.1.12.1.3SearchinRotatedSortedArray描述Supposeasortedarrayisrotatedatsomepivotunknowntoyoubeforehand
2024/12/7 0:08:16 1.03MB leetcode题解
1
停车场管理,二叉树遍历,顺序表和单链表排序,矩阵求和等习题的代码
2024/11/17 6:24:10 3KB 数据结构 上机
1
配书光盘Readme文件 C语言通用范例开发金典第1章数据结构.11.1数组和字符串21.1.1一维数组的倒置2范例1-1一维数组的倒置2∷相关函数:fun函数1.1.2一维数组应用3范例1-2一维数组应用31.1.3一维数组的高级应用5范例1-3一维数组的高级应用51.1.4显示杨辉三角7范例1-4显示杨辉三角7∷相关函数:c函数81.1.5魔方阵9范例1-5魔方阵91.1.6三维数组的表示14范例1-6三维数组的表示14∷相关函数:InitArray函数1.1.7多项式的数组表示17范例1-7多项式数组的表示171.1.8查找矩阵的马鞍点19范例1-8查找矩阵的马鞍点19∷相关函数:Get_Saddle函数1.1.9对角矩阵建立21范例1-9对角矩阵建立21∷相关函数:Store函数1.1.10三对角矩阵的建立22范例1-10三对角矩阵的建立22∷相关函数:Store函数1.1.11三角矩阵建立24范例1-11三角矩阵建立24∷相关函数:Store函数1.1.12对称矩阵的建立25范例1-12对称矩阵的建立25∷相关函数:store函数1.1.13字符串长度的计算28范例1-13字符串长度的计算28∷相关函数:strlen函数1.1.14字符串的复制29范例1-14字符串的复制29∷相关函数:strcpy函数1.1.15字符串的替换31范例1-15字符串的替换31∷相关函数:strrep函数1.1.16字符串的删除33范例1-16字符串的删除33∷相关函数:strdel函数1.1.17字符串的比较35范例1-17字符串的比较35∷相关函数:strcmp函数1.1.18字符串的抽取36范例1-18字符串的抽取36∷相关函数:substr函数1.1.19字符串的分割38范例1-19字符串的分割38∷相关函数:partition函数1.1.20字符串的插入40范例1-20字符串的插入40∷相关函数:insert函数1.1.21字符串的匹配42范例1-21字符串的匹配42∷相关函数:nfind函数1.1.22字符串的合并43范例1-22字符串的合并43∷相关函数:catstr函数1.1.23文本编辑45范例1-23文本编辑45∷相关函数:StrAssign函数1.2栈和队列541.2.1用数组仿真堆栈54范例1-24用数组仿真堆栈54∷相关函数:push函数pop函数1.2.2用链表仿真堆栈57范例1-25用链表仿真堆栈57∷相关函数:push函数pop函数1.2.3顺序栈公用59范例1-26顺序栈公用59∷相关函数:push函数pop函数1.2.4进制转换问题61范例1-27进制转换问题61∷相关函数:MultiBaseOutput函数1.2.5顺序队列操作64范例1-28顺序队列操作64∷相关函数:push函数pop函数1.2.6循环队列66范例1-29循环队列66∷相关函数:EnQueue函数DeQueue函数1.2.7链队列的入队、出队69范例1-30链队列入队、出队69∷相关函数:push函数pop函数1.2.8舞伴问题71范例1-31舞伴问题71∷相关函数:EnQueue函数DeQueue函数DancePartner函数1.3链表751.3.1头插法建立单链表75范例1-32头插法建立单链表75∷相关函数:createlist函数1.3.2限制链表长度建立单链表77范例1-33限制链表长度建立长单链表77∷相关函数:createlist函数1.3.3尾插法建立单链表79范例1-34尾插法建立单链表79∷相关函数:createlist函数1.3.4按序号查找单链表80范例1-35按序号查找单链表80∷相关函数:getnode函数1.3
2024/8/27 9:57:14 4.46MB 开发金典
1
本程序是用单链表对列来管理资源(进程),实现了对进程的优先级调度。
2024/8/23 21:37:37 7KB PCB 优先级
1
设二叉排序树的二叉链表存储结构的类型定义如下:typedefstructnode{intdata;//用整数表示一个结点的名structnode*LChild,*RChild;//左右指针域}BSTNode,*BSTree;设计算法并编写程序求解以下几个问题。
8121410731562415119131613(1)键盘输入一个元素序列创建一棵二叉排序树,输出该二叉排序树的中序遍历序列;
例如,若输入45,24,55,12,37,53,60,23,40,70则创建的二叉排序树为:输出结果为:12232437404553556070(2)在(1)中所得的二叉排序树中插入一个值为58的结点,再输出它的中序遍历序列,输出结果为:1223243740455355586070(3)在(1)中所得的二叉排序树中删除值为45的结点,再输出它的中序遍历序列,输出结果为:12232437405355586070(4)利用(1)中所得的二叉排序树的所有叶子结点构造一个带头结点的单链表L。
要求不能破坏这棵二叉排序树。
所得的单链表L如下。
输出该链表各结点的值,输出结果为:23405370(5)设计算法将(1)中所得的二叉排序树的左右子树进行交换,由于二叉树是一种递归定义,所以子树的左右两棵子树也要相交换,依此类推。
最后输出所得到的二叉树的中序遍历序列。
例如,经过上述操作后,(1)中所得的二叉排序树变为如下形式。
输出该二叉树的中序序列,结果为:70605553454037242312(6)设计算法统计并输出(1)中所得的二叉排序树中只有一个孩子结点的结点个数。
输出结果为:3(7)在(1)中所得的二叉排序树中,设计算法并编写程序输出结点40的所有祖先结点。
输出结果为:452437
2024/8/12 15:36:41 39KB 数据结构 C C++
1
共 59 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡