![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
DataStructure
指针是C语言的灵魂
越努力,越幸运
展开
-
指针可以使得函数返回一个或者一个以上的值
2016年7月10日17:50:05 需求分析:编写函数,要求将数组中的n个元素的值分别减去20;#include<stdio.h>#define N 10//函数前置声明void traverseArray(int *pArr,int length);void subArray(int a[],int length);void subArray1(int * pArr,int原创 2016-11-19 12:56:30 · 1728 阅读 · 0 评论 -
循环队列
2016年7月31日15:35:10 队列是一种操作受限的线性表,队列是一种只允许在表头删除,在表尾进行插入的线性表, 允许插入的一端称为队尾,允许删除的一端称为队头,队列中的数据元素也是一对一的关系 除第一个元素之外,每个元素只有一个直接前驱元素,除最后一个元素之外,每个元素只有一个后继元素, 队列的存贮结构有两种:顺序存贮和链式存贮结构, 顺序队列的表示:原创 2016-11-19 13:23:59 · 1372 阅读 · 0 评论 -
循环队列的应用
2016年7月31日17:47:47 假设在周末的舞会上,男士们和女士们进入舞厅,各自排成一队,跳舞开始时,依次从男队和女队的队头各出一人配成舞伴.若初始人数不同, 则较长的那一队中为配对者等待下一轮舞曲,现在要求写一算法模拟上述舞伴配对问题.该问题具有先进先出的特性,可使用队列作为算法的 数据结构, 1>首先应该解决的问题是,这些数据如何来存贮? 我们可以定原创 2016-11-19 13:26:06 · 1070 阅读 · 0 评论 -
顺序栈
2016年7月23日12:43:45 顺序栈的基本运算#include <stdio.h>#define STICKSIZE 100//定义栈的结构体类型typedef struct { int stick[STICKSIZE]; int top;}SeqStick;//函数声明void initStick( SeqStick * s);int isEmpt原创 2016-11-19 13:28:35 · 423 阅读 · 0 评论 -
顺序栈的应用
2016年7月23日13:32:21 需求:利用顺序栈的基本操作,将元素A,B,C,D,E,F依次进栈, 然后将F和E出栈, 再将G和H进栈, 最后将元素全部出栈; 依次输入出栈的元素;#include <stdio.h>#define STICKSIZE 100typedef char DataType;//定义栈的结构体类型typedef str原创 2016-11-19 13:30:45 · 917 阅读 · 0 评论 -
学生成绩管理系统链表实现
2016年7月11日18:02:51 链表的相关术语: 头结点:1.为什么需要头结点? 为了方便对链表的操作,因而需要头结点; 2.头结点是什么? 链表的第一个节点,首节点前面那节点,但该节点不保存有效数据; 首节点:首节点是链表中第一个保存有效数据的节点; 尾节点:尾节点是链表中最后一个保存有效数原创 2016-11-19 13:33:07 · 3985 阅读 · 0 评论 -
学生成绩管理系统顺序表实现
#include<stdio.h>#include<stdlib.h>#define listSize 100//学生信息结构体typedef struct { long num;//学号 char name[10];//姓名 int score;//成绩}STUDENT;//顺序表结构体typedef struct { STUDENT stu[l原创 2016-11-19 13:37:13 · 11085 阅读 · 2 评论 -
栈的共享
2016年7月23日14:01:33 栈的共享: 为什么需要共享栈? 我们构造一个顺序栈的时候一般会分配一个很大数组空间,但通常我们只是利用了一小部分空间, 当我们还需要定义一个顺序栈的时候,任然需要一个很大的数组空间,这时,为了更好的利用内存 空间,我们就引入了共享栈. 什么是共享栈? 通过两个栈共享一个一维数原创 2016-11-19 13:40:11 · 916 阅读 · 0 评论 -
字符串的处理顺序结构
2016年7月26日09:32:33 字符串的插入:将T所指向的字符串插入到S所指向的字符串中,插入成功返回1,插入失败返回0; 首先明确:pos的合法位置是子串中间的一个位置,不包含在字符串的末尾插入,因此pos的合法范围 是1<=pos<=length; 分三种情形:(1)S->length+T->length<=MAXSIZE:此时T所指向的字符串可以完全插入S原创 2016-11-19 13:42:52 · 582 阅读 · 0 评论 -
链式直接插入排序
2016年7月27日18:13:11 假设用户数据为:[22,6,17,8] 数据的存贮:pHead->[22]->[6]->[17]->[8] 链式存贮结构来保存待排序的数据,首先创建一个链表,将待排序的所有元素存贮到链表中去,将待排序的链表分为两部分 :有序子集和待排序子集,初始时有序子集中没有元素,令pSort->pNext = NULL,指针pCur指向待排序的原创 2016-11-19 13:47:27 · 4832 阅读 · 1 评论 -
冒泡排序
#include<stdio.h>#include<stdlib.h>#define MAXISIZE 1000#define random(x)(rand()%x)//顺序表结构体类型typedef struct { int data[MAXISIZE]; int length;}SeqList;//函数前置声明void initSeqList(SeqList *原创 2016-11-19 13:50:52 · 392 阅读 · 0 评论 -
选择排序顺序结构实现
2016年7月28日08:21:18 选择排序算法思想描述: 假设待排序的元素序列有n个,在第一趟排序的过程中,从n个元素中选择最小的元素,并将其放在元素序列最前面的位置, 在第二趟排序的时候,从剩余的n-1个元素中选择最小的一个元素放在最前面的第二个位置,至到没有元素为止; 假设数据为:[76,31,19,20] 初始状态:[76,31,19,20];原创 2016-11-19 13:52:57 · 857 阅读 · 0 评论 -
折半插入排序顺序结构
2016年7月28日08:21:18 折半插入排序:折半插入排序算法是对直接插入排序算法的改进,它的主要改进在于在已经有序的子集中确定待排序元素的位置 找到要插入的位置后,将相应的元素插入到该位置即可; 假设所给的数据为:[67,53,73,21] 第一趟排序:初始的状态为:[67,|53,73,21] t = 53,在有序子集中min原创 2016-11-19 13:55:50 · 2802 阅读 · 0 评论 -
直接插入排序顺序结构
2016年7月27日18:13:11 假设用户数据为:[22,6,17,8] 直接插入排序的思想是:将待排序元素分为已排序子集和未排序子集,依次从未排序子集中取出一个元素 插入到已排序子集的合适的位置,使得已排序的子集任然为有序子集,当未排序的 子集为空时,排序结束 初始时:[22,|6,17,8] 将t = 6; 第一趟排序:[22,|22,17,8];将6原创 2016-11-19 13:58:09 · 2890 阅读 · 0 评论 -
顺序表的应用
2016年7月13日12:03:58 编程需求:编写一个算法,把一个顺序表拆分成两部分,使顺序表中小于0的元素位于左边, 大于0的元素位于右边,例如(-12,3,-6,-10,20,-7,9,-20)顺序表,经过分拆后 变成(-12,-20,-6,-10,-7,20,9,3); 1.使用顺序表来存贮这些数据,首先建立一个空的顺序表; 2.将保存在数组中的数据保原创 2016-11-19 13:21:51 · 2568 阅读 · 0 评论 -
链式栈实现进制转换
2016年7月25日11:03:37 利用链表模拟栈,将十进制转换成对应的八进制,二进制,八进制#include<stdio.h>#include<malloc.h>#include<stdlib.h>typedef int DataType ;//链表结点的结构体类型定义typedef struct node { DataType stack;//数据域 str原创 2016-11-19 12:27:45 · 4258 阅读 · 0 评论 -
字符串的堆分配
2016年7月26日14:47:30 为什么需要字符串的堆分配? 因为字符串的顺序存贮结构中,对字符串的操作,在字符串中插入一个子字符串,连接两个字符串以及串的替换操作,度可能会 出现空间的不足,而必须要舍弃部分数据的情况,而数组的空间如果分配的过大,又会浪费内存空间,为了避免顺序存贮结构的 局限性,可以使用动态内存分配的方式来表示串,并实现串的基本操作 什么原创 2016-11-18 22:22:54 · 2778 阅读 · 0 评论 -
地址传递
2016年7月10日18:10:23 编写一个函数,求两个整数中的较大者和较小者,要求用地址传递实现; 分析:可以定义两个变量a,b保存用户输入的值,然后通过程序的处理使得a保存 两个中较大的哪个,b保存较小的那个. 总结:在C语言中,在函数调用的过程中,如果需要在被调函数中修改主调函数中实参的值, 1.则必须发送主调函数中实参的地址,否则无法修改,修改的只是原创 2016-11-18 22:01:19 · 646 阅读 · 0 评论 -
集合的并集实现
2016年7月13日08:01:03 假设线性表La和Lb分别表示两个集合,利用线性表基本操作来实现新的集合 ,A=AUB,即扩大线性表A,将线性表B中A所没有的元素插入到A表中. 1.将顺序表进行初始化; 2.将数组中的元素插入到对应的顺序表中,即创建顺序表; 3.将创建的顺序表输出显示; 4.遍历集合B,对集合中的每一个元素,都在集合A中进行查找,原创 2016-11-19 12:24:24 · 1758 阅读 · 0 评论 -
成绩管理小软件
#include<stdio.h>#include<conio.h>#include<stdlib.h>typedef struct stu{ int num; //学生的学号 char name[10]; //学生的姓名 float score; //学生的成绩 }S原创 2016-11-19 12:51:30 · 654 阅读 · 0 评论 -
顺序栈实现十进制转成R进制
2016年7月31日13:53:37 利用顺序栈实现十进制整数转换转换成r进制 1、算法思想 将十进制数N转换为r进制的数,其转换方法利用辗转相除法,以N=3456,r=8为例转换方法如下: N N / 8 (整除) N % 8(求余) 3456 432 0原创 2016-11-19 12:48:09 · 13886 阅读 · 2 评论 -
链式栈
2016年7月23日15:39:13 为什么需要链式栈? 这是因为,顺序栈的使用需要事先指定存贮空间的大小,如果静态分配的存贮空间分配的过大,使得内存空间浪费, 而事先指定的存贮空间分配的过小,会使得,在程序运行时可能会发生存贮空间不够的情形,这就产生了栈的链式 存贮结构. 什么时候适合使用链式栈? 当数据元素的数目变化原创 2016-11-19 12:43:28 · 1409 阅读 · 0 评论 -
表达式的括号是否匹配问题
2016年7月25日12:34:05 常见的括号有三种{},[],(),例如{[()()]},当计算机接受到第一个{时,计算机最迫切见到的是},不幸运的是 接下来它见到的是[,因此当前它想见到]比}还要迫切,更不幸运的是接下来它见到了(,这时它想见到)比]更为迫切 这时来了),这时它会将(从表中删除,当前期望的是],但是接下来来到的是(,因此最期望的括号成为),)比[更为迫切原创 2016-11-18 21:53:49 · 1210 阅读 · 0 评论 -
学生成绩管理系统
#include<stdio.h>#include<malloc.h>#include<stdlib.h>//学生结点类型typedef struct student{ long no ; char name[10]; char addr[20];}STUDENT;//链表结点类型typedef struct node{ STUDENT data;原创 2016-11-18 21:57:26 · 1340 阅读 · 0 评论 -
单链表的创建
2016年7月15日18:07:28 单链表的创建:建立一个单链表,首先需要明确需要创建的节点的个数,创建哪个链表 最后用一个函数来实现,最后返回链表的头指针,有了头指针之后,一个单链表也就确定 实现链表的创建有两种方式: 1.头插入法:使得每次新生成的节点成为第一个节点; 2.尾插入法:使得每次新生成的节点都成为最后一个节点; 本程序实现:使用尾插法原创 2016-11-19 11:52:02 · 1055 阅读 · 0 评论 -
单链表的基本操作
2016年7月14日16:22:48 单链表的基本运算有: 1.单链表的创建; 2.单链表的插入; 3.判断单链表是否为空; 4.求单链表的长度; 5.根据内容查找元素; 6.根据序号查找单链表; 7.单链表的插入; 8.单链表的删除; 9.单链表的遍历; 10.销毁单链表;#include<stdio.h>//原创 2016-11-19 11:58:54 · 936 阅读 · 0 评论 -
共享栈
#include<stdio.h>#define STICKSIZE 100typedef int DataType ;//共享栈的结构体类型typedef struct { DataType stick[STICKSIZE]; int top1; int top2;}ShareStick;//函数前置声明void initStick(ShareStick原创 2016-11-19 12:04:28 · 858 阅读 · 0 评论 -
回文序列
2016年8月1日13:55:05 编写一个算法,判断任意给定的字符序列是否是回文序列, 什么是回文序列? 所谓回文是指一个字符序列顺着看和倒着看是完全相同的字符序列,例如12344321,12321 分析:可以通过构造栈和队列来实现,可先把任意给定的字符序列存放到队列和栈中,然后将字符序列出队和出栈, 比较出栈和出队列的字符是否相等,原创 2016-11-19 12:21:12 · 3417 阅读 · 0 评论 -
链表
2016年7月11日18:02:51 链表的相关术语: 头结点:1.为什么需要头结点? 为了方便对链表的操作,因而需要头结点; 2.头结点是什么? 链表的第一个节点,首节点前面那节点,但该节点不保存有效数据; 首节点:首节点是链表中第一个保存有效数据的节点; 尾节点:尾节点是链表中最后一个保存有效数原创 2016-11-19 12:33:33 · 307 阅读 · 0 评论 -
折半插入排序
2016年7月28日08:21:18 折半插入排序:折半插入排序算法是对直接插入排序算法的改进,它的主要改进在于在已经有序的子集中确定待排序元素的位置 找到要插入的位置后,将相应的元素插入到该位置即可; 假设所给的数据为:[67,53,73,21] 第一趟排序:初始的状态为:[67,|53,73,21] t = 53,在有序子集中min原创 2016-11-19 14:01:20 · 396 阅读 · 0 评论