C_数据结构_循环队列】的更多相关文章

# include <stdio.h> # include <malloc.h> typedef struct Queue { int * pBase; int front; int rear; }QUEUE; void init(QUEUE *); //初始化 bool en_queue(QUEUE *, int val); //入队 void traverse_queue(QUEUE *); //遍历输出 bool full_queue(QUEUE *); //判断是否已满 b…
# include <stdio.h> int main(void) { int val; printf("请输入一个数字:"); printf("val = "); scanf("%d", &val); ; i<=val; ++i) { mult = mult * i; } printf("%d的阶乘是:%d\n", val, mult); ; }…
本文根据<大话数据结构>一书,实现了Java版的循环队列.链队列. 队列:只允许在一端进行插入操作,而在另一端进行删除操作的线性表. 1.循环队列 队列的顺序储存结构:用数组存储队列,引入front指针指向队头元素,rear指针指向队尾元素的下一个位置,当front=rear时,为空队列,结构如下图所示. 当执行入队操作时,若数组尾部已满,而数组前部因有元素出队而有空位时,我们把新插入的元素从头开始入队,这样就类似于头尾相接的结构. 队列的这种头尾相接的顺序存储结构称为循环队列,如下图所示.…
生活中有非常多队列的影子,比方打饭排队,买火车票排队问题等,能够说与时间相关的问题,一般都会涉及到队列问题:从生活中,能够抽象出队列的概念,队列就是一个能够实现"先进先出"的存储结构.队列分为链式队列和静态队列:静态队列一般用数组来实现,但此时的队列必须是循环队列,否则会造成巨大的内存浪费:链式队列是用链表来实现队列的.这里讲的是循环队列,首先我们必须明确以下几个问题 一.循环队列的基础知识 1.循环队列须要几个參数来确定 循环队列须要2个參数,front和rear 2.循环队列各个參…
描述 创建一个循环队列,队列元素个数为4.能够实现队列的初始化.入队列.出队列.求队列长度等操作. 循环队列数据类型定义如下: typedef struct{ int data[Max];    int front;    int rear;}SqQueue; 部分代码已经给出,请补充完整,提交时请勿包含已经给出的代码. int main() { SqQueue q; char ss[10]; int x, sta,l; InitQueue(&q); while(scanf("%s&qu…
循环队列 比较简单,循环队列主要是判断队满.队空.有效元素个数 画图说明: 假设:队的长度为5(0-4) 但是实际maxsize为6,需要一个预留空间(不存储元素)做计算 继续添加3个元素后: 出队一个元素 下面是完整循环队列代码demo: public class CircleArrayQueueDemo { private int maxSize; private int front; private int rear; private int[] arr; public static vo…
通过上面的分析我们已经对循环队列很了解了,现在我们来学习下循环队列的实现形式 1.代码使用数组现实循环队列 #include<stdio.h> #include<malloc.h> #include <stdio.h> #include <stdlib.h> typedef struct Queue{ int * data;//存储的数据,指向一个数组 int font ;//队列数据删除 int rear;//队列数据的添加 }QUEUE ,*PQUEUE…
上面讲解都是循环队列,如果是链表实现的话就很简单,队列只有循环队列才比较复杂 此时队列中只存储一个有效元素3,当在删除一个元素的时候,队列为空,pFont向上移动,pFont等于pRear,但是此时pFont的值不为null 1.下面分析下如何向队列中添加元素 我们添加元素的时候只有在pRear的地方添加,pRear向上移动 上面这种情况,pRear已经指向了数组的最尾部分,此时添加数据的时候,pRear不能继续向上加1,执行6的位置,这个时候会出现内存溢出,pRear要执行到数组的0位置第一个…
一.概念: 循环队列就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用 二.代码实现: @SuppressWarnings("unchecked") public class CircleQueue<E> { private int front; private int size; private E[] elements; private static final int DEFAULT_CAPACITY = 10; public Cir…
课程设计------邻接表 图的遍历实现课程设计:https://files.cnblogs.com/files/Vera-y/图的遍历_课程设计.zip #include<stdio.h> #include<stdlib.h> #include<windows.h> #define OK 1 #define MAX_VERTEX_NUM 20 //最大顶点个数 //邻接表存储结构 typedef struct ArcNode { //邻接顶点信息链表 int adjv…
程序主要实现了图的深度遍历和广度遍历. #include <stdio.h> #include <stdlib.h> #include <string.h> #define OVERFLOW -2 #define ERROR 0 #define OK 1 #define Length (q.rear+1)%QUEUE_MAXSIZE //队满 #define MAX_VERtEX_NUM 20 //顶点的最大个数 #define QUEUE_MAXSIZE 100 #d…
# 链式存储#include<stdio.h> #include<stdlib.h> #define STACK_INIT_SIZE 100//存储空间初始分配量 #define STACKINCREMENT 10//存储空间分配增量 #define TURE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef struct QNode{ int data; struct QNode…
# include <stdio.h> void QuickSort(int * a, int low, int high); int FindPos(int * a, int low, int high); int main(void) { ] = {, , , , , }; int i; QuickSort(a, , ); //第二个参数表示第一个元素的下标,第三个参数表示最后一个元素的下标,表示把a[0]-a[5]进行排序 ; i<; ++i) printf("%d &q…
# include <stdio.h> long sum(int n) { //用递归实现: ) ; else ) + n; /* 用for循环实现: long s = 0; int i; for (i=q; i<=n; ++i) s += i; return s; */ } int main(void) { int val; printf("请输入您需要累加的值:"); scanf("%d", &val); printf("累加…
#include<stdio.h> typedef struct Node { int a,b; }node; node c[]; int n; void print() { int i; printf("\n当前数据:\n"); ;i<=n;i++) { printf("第%d组:a=%d,b=%d\n",i,c[i].a,c[i].b); } printf("\n\n"); }//输出 void setnum() { int…
"Queue.h" #include "Queue.h" #include <stdio.h> #include <stdlib.h> status Queue_init(SqQueue *Q) { Q->data = (char*)malloc(sizeof(char)*MAXSIZE); Q->front = ; Q->rear = ; return OK; } status Queue_In(SqQueue *Q,ch…
#include <stdio.h> #include <stdlib.h> #include <string.h> #define ERROR 0 #define OK 1 #define Size 21 // 指定质数(数组长度) typedef struct{ ]; ]; ]; }mul; typedef struct{ mul data[]; int size; }Hashtable; void init(Hashtable &h) { ;i<Si…
传统的链表不能实现数据和链表的分离,一旦数据改变则链表就不能用了,就要重新开发. 如上说示:外层是Teacher,里面小的是node. #ifndef _MYLINKLIST_H_ #define _MYLINKLIST_H_ typedef void LinkList;//链表上下文,任意类型 typedef struct _tag_LinkListNode { struct _tag_LinkListNode* next;//包含下一个节点的地址 }LinkListNode;//节点 Lin…
#include<stdio.h> #include<stdlib.h> #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 //stackincrement #define OVERFLOW -2 #define OK 1 #define ERROR 0 typedef struct{ int *base; int *top; int stacksize; }SqStack; //构建空栈 int InitStack(SqS…
#include<stdio.h> #include<stdlib.h> #define ERROR 0 #define OK 1 #define OVERFLOW -2 typedef struct Lnode{ int data; struct Lnode *next; }LNode,*LinkList; //初始化一个空指针 int InitList_L(LinkList &L){ L=(LNode *)malloc(sizeof(struct Lnode)); //…
#define OK 1 #define ERROR 0 #define OVERFLOW -2 #define LIST_INIT_SIZE 100 // 线性表存储空间的初始分配量 #define List_Increment 10 //线性表存储空间的分配增量 #include<stdio.h> #include<string.h> #include<stdlib.h> typedef struct{ int *elem; //存储空间的基地址 int lengt…
#include <stdio.h> #include <conio.h> #include <windows.h> #include <time.h> #define Height 25 //迷宫的高度,必须为奇数 #define Width 25 //迷宫的宽度,必须为奇数 #define Wall 1 #define Road 0 #define Start 2 #define End 3 #define Esc 5 #define Up 1 #def…
# include <stdio.h> # include <malloc.h> struct BTNode { int data; struct BTNode * pLchild; // p 是指针 L 是左 child 是孩子 struct BTNode * pRchild; // 表示右孩子 }; struct BTNode * CreateBTree(void); //静态创建二叉树 void PreTraverseBTree(struct BTNode * pT); //…
# include <stdio.h> int g(int); int f(int); int f(int n) { ) printf("haha\n"); else n = f(n-); return n; } int g(int m) { m = m*; return m; } int main(void) { int val; val = f(); printf("val = %d\n", val); ; } # include <stdio…
# include <stdio.h> int main(void) { int val; printf("请输入一个数字:"); printf("val = "); scanf("%d", &val); ; i<=val; ++i) { mult = mult * i; } printf("%d的阶乘是:%d\n", val, mult); ; }…
# include <stdio.h> void f(int n) { ) printf("哈哈\n"); else f(n-i); } int main(void) { f(); ; }…
# include <stdio.h> void f(); void g(); void k(); void f() { printf("FFFF\n"); g(); printf("1111\n"); } void g() { printf("GGGG\n"); k(); printf("2222\n"); } void k() { printf("KKKK\n"); } int main(v…
# include <stdio.h> # include <malloc.h> # include <stdlib.h> typedef struct Node //建造节点 { int data; struct Node * pNext; }NODE, * PNODE; typedef struct Stack //建造栈所需要的两个参数 { PNODE pTop; //指向栈顶的元素 PNODE pBottom; //指向栈底没有实际含义的元素 }STACK, *…
//数组 # include <stdio.h> # include <malloc.h> //包含了 malloc 函数 # include <stdlib.h> //包含了 exit 函数 struct Arr //定义了一个叫struct Arr 的数据类型没有定义变量 { int * pBase; //存储的是数组第一个元素的地址 int len; //数组能容纳的元素的个数 int cnt; //当前数组的有效的元素的个数 }; void init_arr(s…
#include<stdio.h> #include<stdlib.h> #define OK 1 #define ERROR 0 #define OVERFLOW -2 #define True 1 // 定义二叉树的节点类型 typedef struct BiTNode{ char data; struct BiTNode *lchild; // 定义节点的左孩子指针,有孩子指针 struct BiTNode *rchild; }BiTNode,*BiTree; //先序遍历构…