#include <stdio.h> #include <stdlib.h> #define MAX 1000 void printList(int list[], int n) { int i; for (i = 0; i < n; i++) { printf("%d ", list[i]); } printf("\n"); } void heapA
#include <stdio.h> #include <stdlib.h> #define MAX 100 int binarySearch(int list[], int n, int key, int *count) { int low = 0, high = n - 1, num = 0; int t = (low + high) / 2; whil
#include <stdio.h> #include <stdlib.h> #define N 20 #define TRUE 1 #define FALSE 0 //访问标志数组 int visited[N]; //采用数组定义的队列,用于广度搜索 typedef struct { int data[N]; int front, rear; } SqQueue;
#include <stdio.h> #include <stdlib.h> #define N 5 void compress(int a[][5],int sa[]) { int i=0,j=0,k=0; for(i=0;i<5;i++) { for(j=0;j<5;j++) { if(i&
#include <stdio.h> #include <stdlib.h> #define N 6 #define MAX 20 typedef int ElemType; typedef struct{ int i,j; ElemType e; }Triple; typedef struct{ Triple data[MAX]; int
如果需要新建结点(例如往二叉树里面插入结点时,可使用下面的函数(返回类型是一个指向node的指针) node* newNode(int v) { nodeNode = new node; //申请一个node类型变量的地址空间 Node->data = v; //结点权值为v Node->lchild = Node->rchild = NULL; //初始状态下无左右
四种主要的遍历思想为:前序遍历:根结点 ---> 左子树 ---> 右子树中序遍历:左子树---> 根结点 ---> 右子树后序遍历:左子树 ---> 右子树 ---> 根结点层次遍历:只需按层次遍历即可例如,求下面二叉树的各种遍历前序遍历:1 2 4 5 7 8 3 6 中序遍
#include <stdio.h> #include <stdlib.h> #define INIT_SIZE 5 #define INCREM 3 typedef int ElemType; /*顺序表结构*/ typedef struct Sqlist { ElemType *slist; int length; int listsize; } Sqlist;
Status PreOrderTraverse(BiTree T){ if (T != NULL) //根节点是否为空 { BiTNode* Stack[STACK_INIT_SIZE]; int top = -1; //创建栈 BiTNode* p = NULL; //遍历指针 Stack[++top] = T; //节点入栈 whi
void createBiTree(BiTree *t) { char s; BiTree q; s=getchar(); if(s=='#') { *t=NULL; return ; } q=(BiTree)malloc(sizeof(BTNode)); q->data=s; *t=q; createBiTree(&q->l
#include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <string.h> #define INITSIZE 1000 #define INCRE 20 #define OK 1 #define ERROR 0 typedef struct { char *dat
球球学姐想记录下来队员们出实验室的顺序,但是由于她太累了,睡了一觉发现已经第二天了,错过了队员们离开实验室的现场,但是通过后台信息查询到了门禁系统有n条日志信息。 //日志信息有两种类型: //第一种是1 字符串s,代表有一位姓名为s的队员进入了实验室。 //第二种是2,代表有一位队员离开了实验室。 //我们保证队员离开实验室的顺序是先进后出,可能存在同名情况,你能帮助球球学姐还原离开实验室的顺序
#include <stdlib.h> #include <stdio.h> #include <string.h> #define MAXSIZE 100 typedef struct { char *data; int length; int stringsize; } SqString; //初始化 int initString(SqString
【问题描述】串的模式匹配算法BF的实现与应用。【输入形式】第一行输入主串s;第二行输入模式串t;输入串中均不包含空格字符。【输出形式】模式串在主串s中的出现的每一个位置序号。若一次都未匹配到,则输出0。【样例输入1】ababcabcacbabab【样例输出1】1 3 6 12【样例输入2】11111345511323234243243211【样例输出2】1 2 3 4 10【样例输入3】fasdf
KMP算法要解决的问题就是在字符串(也叫主串)中的模式(pattern)定位问题。说简单点就是我们平时常说的关键字搜索。模式串就是关键字(接下来称它为P),如果它在一个主串(接下来称为T)中出现,就返回它的具体位置,否则返回-1(常用手段)。这里面的前缀集表示除去最后一个字符后的前面的所有子串集合,同理后缀集指的的是除去第一个字符后的后面的子串组成的集合。举例说明如下:在“aba”中,前缀集就是除
#include<stdio.h> #include<stdlib.h> #define STACK_INT_SIZE 10 #define STACKINCREMENT 5 #define OK 1 #define ERROR 0 #define MAXQSIZE 51 typedef int ElemType; typedef int QElemType; /*队列元
【问题描述】午后,幼儿园老师给小朋友分玩具,玩具数量和小朋友数量相同。玩具都放在箱子里,有积木和玩偶两种,有的小朋友喜欢积木,有的喜欢玩偶。小朋友排队按次序拿玩具:如果排在最前面的小朋友喜欢箱子最上面的玩具(只能拿最上面的玩具),那么会开心地离开队列去玩;否则不喜欢这个玩具,则会放弃,重新排到队尾,等着下一次轮到自己再拿。这个过程会一直持续到队列里所有小朋友都不喜欢箱子最上面的玩具为止。队列里小朋
【问题描述】实现串的顺序表示和基本操作。【输入形式】第一行输入一个字符串;第二行输入一个字符串;第三行输入两个整数,分别表示在第一个字符串中获取子串的起始位置和长度;【输出形式】输出两个字符串比较的结果,若相等输出=,否则输出<>输出子串(若子串获取不成功,输出error)输出两个字符串的连接结果【样例输入1】123456abcdefg3 4【样例输出1】<>3456123
【问题描述】周末舞会上,男生和女生们分别进入舞厅,各自排成一队。假设每首舞曲只能有一名男生一名女生跳舞,跳舞开始,依次从男队和女队队头各取一人配成舞伴,若两队初始人数不同,则较长那一队未配对者等待下一轮舞曲。配对成功的舞伴跳完舞排回各自队伍的最后。现要求写一算法模拟上述舞伴配对问题。【输入形式】第一行输入两个整数n和k,n(n<1000)表示入场人数,k表示舞曲数。接下来n行输入n个人的姓名
【问题描述】实现无头结点链队列的基本操作。【输入形式】输入若干个整数(以空格分隔),其中0表示做出队操作,不为0的整数为入队元素。【输出形式】若出队错误输出“error”;若最后队列为空,则输出“empty”;若最后队列非空,依次输出队列的全部元素。【样例输入1】1 2 3 4 5 6【样例输出1】1 2 3 4 5 6【样例输入2】1 2 3 0 0 4 0 5【样例输出2】4 5【样例输入3】
思路:假设指针 p 和 q 分别指向多项式 P 和 Q 中当前进行比较的某个结点,则比较两个结点中的指数项有3种情况:一是指针 p 所指结点的指数值 < 指针 q 所指结点的指数值,则应该摘取 p 所指结点插入到“多项式”链表中;二是指针 p 所指结点的指数值 > 指针 q 所指结点的指数值,则应该摘取 q 所指结点插入到“多项式”链表中;三是指针 p 所指结点的指数值 = 指针 q
代码实现:#include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <ctype.h> #define ERROR 0 #define OK 1 #define STACK_INT_SIZE 10 #define STACKINCREMENT 5 typedef char
在convert函数中遵循如下规则:具体过程为:1.创建栈2.从左向右顺序获取中缀表达式①.数字直接输出②.运算符一:遇到左括号直接入栈,遇到右括号将栈中左括号之后入栈的运算符全部弹栈输出,同时左括号出栈但是不输出。二:遇到乘号和除号直接入栈,直到遇到优先级比它更低的运算符,依次弹栈。三:遇到加号和减号,如果此时栈空,则直接入栈,否则,将栈中优先级高的运算符依次弹栈(注意:加号和减号属于同一个优先
一、自我介绍本人目前大一,刚学完C语言,目前在学数据结构与算法,自学能力较强,自己在学习之外按照视频的教程写一些小项目,如俄罗斯方块(C语言),还没有参加任何竞赛,但有打算在未来参加,生活积极向上,乐观开朗。二、技术分享链表求长度的小总结:在求链表的长度有两种办法可以实现:①设指针p指向链表的头节点,While(p->next!=NULL){ length++; &nb
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号