首页 > 其他分享 >C语言 队列例程

C语言 队列例程

时间:2024-10-12 13:10:56浏览次数:8  
标签:node include 例程 NodeArr next dat 队列 int C语言

队列的数据成员为结构体或数组

#include <stdio.h>
#include<stdlib.h>
#include<assert.h>

typedef struct nodeArr
{
	int dat[2];
	struct nodeArr* next;
}NodeArr;


NodeArr* initQueueAr();
int is_emeptyAr(NodeArr* Q);
void enQueueAr(NodeArr* Q, int* arr);
void deQueueAr(NodeArr* Q);
void printQueueAr(NodeArr* Q);
#include "queSt.h"

//队列的初始化
NodeArr* initQueueAr()
{
	NodeArr* Q = (NodeArr*)malloc(sizeof(NodeArr));
	assert(Q);
	Q->next = NULL;
	*Q->dat = 0;        // 用来记录元素个数
	return Q;
}

//判断队列是否为空
int is_emeptyAr(NodeArr* Q)
{
	if (*Q->dat == 0 || Q->next == NULL)
		return 1;
	else
		return 0;
}

//入队 尾插
void enQueueAr(NodeArr* Q, int *arr)
{
	NodeArr* q = Q->next;
	NodeArr* node = (NodeArr*)malloc(sizeof(NodeArr));
	assert(node);
	if (is_emeptyAr(Q))
	{
		Q->next = node;
		//node->data = data;
		*node->dat = *arr;
		*(node->dat + 1) = *(arr + 1);

		node->next = NULL;
	}
	else
	{
		while (q->next)                  //两种找到尾结点的方式
		{
			q = q->next;
		}
		q->next = node;
		*node->dat = *arr;
		*(node->dat + 1) = *(arr + 1);
		node->next = NULL;
	}
	(*Q->dat)++;
}

//出队 头出
void deQueueAr(NodeArr* Q)
{
	NodeArr* node = Q->next;
	if (is_emeptyAr(Q))
		return;
	else
		Q->next = node->next;
	free(node);
	node = NULL;
	(*Q->dat)--;
}
// 打印函数
void printQueueAr(NodeArr* Q)
{
	NodeArr* node = Q->next;
	while (node)
	{
		printf("%d, %d. --\n", *(node->dat), *(node->dat + 1));
		//printf();
		node = node->next;
	}
	printf("Arr over!\n");
}
#include <iostream>
#include "queue.h"
#include "que2.h"
#include "queSt.h"


#define N 100

int test_p1();

int main()
{
    //std::cout << "Hello World!\n";
    char a[N] = {0};
    Node* Q;

    NodeArr* B;

    int tc_ar1[2] = {3, 5};
    int tc_ar2[2] = {7, 8};
    int tc_ar3[2] = {12, 15};



    //scanf_s("%s", a, sizeof(a));
    //printf("%s\n", a);//方法二 
    test_p1();

    //Q = initQueue();
    //enQueue(Q, 1);
    //enQueue(Q, 2);
    //enQueue(Q, 3);
    //enQueue(Q, 8);
    //enQueue(Q, 5);
    //deQueue(Q);
    //printf("%d\n", Q->data);
    //printQueue(Q);

    B = initQueueAr();
    enQueueAr(B, tc_ar1);
    enQueueAr(B, tc_ar2);
    enQueueAr(B, tc_ar3);
    deQueueAr(B);
    enQueueAr(B, tc_ar1);
    enQueueAr(B, tc_ar3);
    deQueueAr(B);

    printQueueAr(B);

    printf("hello W!");
}

int test_p1()
{
    printf("CCT2 Start****\n");
    return 0;
}

标签:node,include,例程,NodeArr,next,dat,队列,int,C语言
From: https://www.cnblogs.com/xjxlb/p/18460323

相关文章

  • c语言链表-学生管理系统
    include<stdio.h>include<stdlib.h>include<string.h>//定义结构体structSTU{charnum[8];//学号charname[5];//姓名intscore;//成绩};//定义链表structtemp{structSTU*s;structtemp*next;};voidadd(structtemp**head);//......
  • C语言的常见概念(三)
    上一期讲到了关于转义字符的知识与使用,今天继续为大家介绍C语言中的语句与语句使用,以及关于注释的相关知识语句和语句的使用语句和语句分类C语言的代码是由⼀条⼀条的语句构成的,C语言中的语句可为以下五类:•空语句•表达式语句•函数调用语句•复合语句•控制......
  • 【C语言】语义陷阱(5):揭秘空指针与空字符串的微妙差异
    目录一、空指针(NullPointer)1.1.定义与表示1.2.用途1.3.安全性 1.4.注意事项1.5.空指针与野指针的区别1.5.1.特性对比1.5.2.安全性与风险1.5.3.编程实践二、指向空字符串的指针2.1.定义2.2.字符数组与空字符串2.3.指针的初始化2.4.空字符串的用途2......
  • 【趣学C语言和数据结构100例】
    【趣学C语言和数据结构100例】问题描述一个球从100m高度自由落下,每次落地后反弹回原高度的一半,再落下,求它在第10次时共经过多少米,第10次反弹多高。猴子吃桃问题。猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天早上又将剩下的桃子吃掉一......
  • 动态内存管理(c语言)
    这里写目录标题1.为什么有动态内存分配2.malloc函数和free函数3.calloc和realloc1.为什么有动态内存分配在讲动态内存的优势之前,先聊聊其他内存开辟方法的不足之处。上图内存开辟方法的特点为:1.空间开辟的大小是固定的。2.数组在声明的时候需要指定长度,数组空间......
  • c语言模拟实现库函数 strlen strcpy strcat strcmp strstr
    一、模拟实现库函数strlen解释:strlen是求字符串长度的,求出的长度是不可能为负数所以返回类型设置为size_t也是合情合理的 typedefunsignedintsize_t\注意字符串已经'\0'作为结束标志,strlen函数返回的是在字符串中'\0'前面出现的字符个数(不包含'\0')。size_......
  • 【C语言】自定义类型:联合体和枚举
    文章目录一、联合体(共同体)1.联合体类型的声明2.联合体的特点测试1测试23.联合体大小的计算例1例24.联合体小练习5.结构体和联合体内存占用的对比6.联合体的应用二、枚举1.枚举类型的声明2.枚举类型的优点3.枚举类型的使用一、联合体(共同体)1.联合体类型的声......
  • 2024西北工业大学noj(C语言)记录
    作者是零基础捏,仅作个人学习记录,多数题目会有更优解。有些题目虽然AC了但是可能不严谨。有错误请务必指正我我做完之后会看去年学长发的贴子,各位可以直接看他们的,他们的算法确实更优,有些打的注解就是看过他们的文章后加入的。如果各位有优解可以在评论区或者私信教我hh......
  • C语言笔记 13
    初见函数求素数的和#include<stdio.h>intmain(){intm,n;intsum=0;intcnt=0;inti;scanf("%d%d",&m,&n);//m=10,n=31;if(m==1)m=2;for(i=m;i<=n;i++){intisPrime=1;intk;for(k=2;......
  • 菲姐游泳(C语言实现)
    游泳奥运冠军菲姐刻苦训练,从早上a时b分开始下水训练,直到当天的c时d分结束。请编程计算:菲姐当天一共训练多少小时多少分钟?输入格式:一行之内输入以空格分隔的4个非负整数,分别对应a,b,c,d。其中,0≤a<c≤24;b和d均不大于60。输出格式:h:m。其中,整数h表示小时数,整数m表示分钟......