c语言自动生成球队名称,C语言数据结构链队列(创建、入队、出队、取对头元素、遍历)...

C语言数据结构链队列(创建、入队、出队、取对头元素、遍历)

C语言数据结构链队列(创建、入队、出队、取对头元素、遍历)

/*

*链队列的相关操作

*创建一个rear和front指针的结构体

*创建一个链表的结构体

*初始化时rear和front指向head指针

*采用尾插法创建链表

*操作 (初始化、创建、入队 、出队、取对头元素、遍历)

*/

#include

#include

#include

#include

#define NAMESIZE 255//字符串的最大长度

#define OK 1

#define ERROR 0

int count =0;//记录队列元素的个数

typedef int IdTYpe;//数据域的编号的数据类型

typedef char* NameType;//数据域的名称的指针的数据类型

typedef int Statu;//函数点的返回值数据类型

typedef struct elementtype

{

IdTYpe id;//数据域的编号

NameType name;//数据域的名称

}ElementType;//数据域的结构体

typedef struct linknode

{

ElementType data;//链队列的数据域

struct linknode *next;//指向下一个节点的指针

}Link_Node;//链表的结构体

typedef struct linkqueue

{

Link_Node *rear;

Link_Node *front;//头指针和尾指针

}Link_Queue;//链栈的指针域结构体

void INit_linkqueue(Link_Node*head,Link_Queue*q);//链队列的初始化

Statu create_linkqueue(Link_Queue*q);//链队列的创建

Statu pop_linkqueue(Link_Queue*q,ElementType *data);//出队

Statu push_linkqueue(Link_Queue*q,ElementType data);//入队

Statu getdata_linkqueue(Link_Queue*q,ElementType*data);//取对头元素

Statu empty_linkqueue(Link_Queue*q);//判断对列是否为空

void Display_linkqueue(Link_Queue*q);//遍历队列的元素

void main()

{

Link_Node*head;//链表的头指针

ElementType data;//入队元素

ElementType key;//出队的元素

ElementType data1;//取对头元素

head=(Link_Node*)malloc(sizeof(Link_Node));

Link_Queue*q;

q=(Link_Queue*)malloc(sizeof(Link_Queue));

if(head!=NULL&&q!=NULL)

//对其进行初始化

INit_linkqueue(head,q);

//对其进行创建

int result=create_linkqueue(q);

if(result==ERROR)

printf("队列创建失败\n");

else

{

printf("队列创建成功\n");

printf("队列的元素的个数为%d\n",count);

}

if(empty_linkqueue(q))

printf("队列为空\n");

else

printf("队列不为空\n");

printf("请输入要入队元素的名称\n");

data.name=(NameType)malloc(sizeof(char)*NAMESIZE);

scanf("%s",data.name);

data.id=rand()%50;//产生随机数字

int result1=push_linkqueue(q,data);

if(result1==OK)

printf("入队成功\n");

else

printf("入队失败\n");

data1.name=(NameType)malloc(sizeof(char)*NAMESIZE);

int result2=getdata_linkqueue(q,&data1);

if(result2==ERROR)

printf("取对头元素失败\n");

else

{

printf("取对头元素成功\n");

printf("对头元素为[%d,%s]\n",data1.id,data1.name);

}

key.name=(NameType)malloc(sizeof(char)*NAMESIZE);

int result3=pop_linkqueue(q,&key);

if(result3==ERROR)

printf("出队失败\n");

else

{

printf("出队成功\n");

printf("出队的元素为[%d,%s]\n",key.id,key.name);

}

printf("队列元素的遍历的结果为\n");

Display_linkqueue(q);

}

void INit_linkqueue(Link_Node*head,Link_Queue*q)//链队列的初始化

{

q->front=head;

q->rear=head;//对指针进行初始化

}

Statu create_linkqueue(Link_Queue*q)//链队列的创建

{

if(q->front==NULL||q->rear==NULL)

return ERROR;

Link_Node *s;//循环创建的链表节点

char name[NAMESIZE];

printf("请输入数据域的名称\n");

while(scanf("%s",name)!=EOF)

{

if(strcmp(name,"^")==0)

break;

else

{

s=(Link_Node*)malloc(sizeof(Link_Node));

s->data.name=(NameType)malloc(sizeof(char)*NAMESIZE);

s->data.id=rand()%50;//随机函数

strcpy(s->data.name,name);//字符串的赋值

q->rear->next=s;

q->rear=s;

s->next=NULL;// 最后一个节点的next指针为空

count++;//队列节点的计数

}

}

return OK;

}

Statu empty_linkqueue(Link_Queue*q)//判断对列是否为空

{

if(q->rear==q->front)

return OK;

else

return ERROR;

}

Statu push_linkqueue(Link_Queue*q,ElementType data)//入队

{

Link_Node *node;

node=(Link_Node*)malloc(sizeof(Link_Node));

node->data.name=(NameType)malloc(sizeof(char)*NAMESIZE);

strcpy(node->data.name,data.name);

node->data.id=data.id;

q->rear->next=node;

q->rear=node;

node->next=NULL;

return OK;

}

Statu pop_linkqueue(Link_Queue*q,ElementType *data)//出队

{

Link_Node*node;

node=(Link_Node*)malloc(sizeof(Link_Node));

//出队进行队列的判空

if(empty_linkqueue(q))

return ERROR;//队列为空退出函数

else

{

node=q->front->next;

data->id=node->data.id;

strcpy(data->name,node->data.name);

q->front->next=node->next;//将头指针指向下一个节点

free(node); //释放内存

}

return OK;

}

Statu getdata_linkqueue(Link_Queue*q,ElementType*data)//取对头元素

{

Link_Node*node;

if(empty_linkqueue(q))

return ERROR;

else

{

node=q->front->next;

data->id=node->data.id;

strcpy(data->name,node->data.name);

return OK;

}

}

void Display_linkqueue(Link_Queue*q)

{

ElementType data;

//判空

if(empty_linkqueue(q))

return ERROR;

else

{

while(empty_linkqueue(q)!=OK)

{

data.name=(NameType)malloc(sizeof(char)*NAMESIZE);

pop_linkqueue(q,&data);

printf("[%d,%s]\t",data.id,data.name);

}

}

}

3de9fef0d01d69d12677c36d994e7feb.png

C语言数据结构链队列(创建、入队、出队、取对头元素、遍历)相关教程

南京邮电大学汇编——实验一:汇编语言语法练习与代码转换

南京邮电大学汇编——实验一:汇编语言语法练习与代码转换 南京邮电大学汇编——实验一:汇编语言语法练习与代码转换 实验环境 实验一:在屏幕下打印学号 实验代码 DOSBOX使用记录 实验二:改错汇编源代码 实验环境 DosBox Tasm 实验一:在屏幕下打印学号 说

R语言--(7)--自定义函数

R语言--(7)--自定义函数 变量名 - function(arg_1, arg_2, ...) expression 编写一个用二分法求非线性方程根的函数,并求方程 x3?x?1=0x^3 -x -1 =0x3?x?1=0 在区间 [a,b][a,b ][a,b] 内的根,精度要求 ?=10?6\epsilon=10^{-6}?=10?6 绘制函数图像 x=seq(-5,5

rabbitmq高级特性(延迟队列)

rabbitmq高级特性(延迟队列) 1.maven依赖 dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-amqp/artifactId /dependency dependency groupIdorg.projectlombok/groupId artifactIdlombok/artifactId optionaltrue/optio

2020-10-14 //严蔚敏《数据结构》 //最小生成树--Prim算法

2020-10-14 //严蔚敏《数据结构》 //最小生成树--Prim算法 //严蔚敏《数据结构》//最小生成树--Prim算法//自学中,加油!#includeiostream#includestringusing namespace std;const int MaxVertexnum=20;const int Infinity=INT_MAX;#define InfoType string#

重学数据结构-二分搜索树及它的各种操作(kotlin实现)

重学数据结构-二分搜索树及它的各种操作(kotlin实现) 在开始之前,应该先讲一下什么是二叉树。 什么是二叉树? 和链表一样,同样也是动态数据结构 二叉树具有唯一的根节点 class NodeE { var e: E? = null var left: NodeE? = null var right: NodeE? = null}

【C语言程序设计】C语言实现一元二次方程的求解

【C语言程序设计】C语言实现一元二次方程的求解 一元二次方程的一般形式: 分析求解过程: 当a=0,不能构成一元二次方程。 当b=0,不一定能构成等式 当c=0,即为恒等式0=0 当a不等于0,可构成一元二次方程,考虑实根和虚根 基于伪代码,实现一元二次方程的求

【Go语言教程】(一) 下载、安装、配置

【Go语言教程】(一) 下载、安装、配置 一、下载 Go语言官方网站地址https://golang.google.cn/ Go语言中文网下载地址https://studygolang.com/dl 二、安装 双击安装包,一直下一步就行 安装完成 三、配置 1.配置Go运行目录 2.配置GoPath 3.配置路由(可要可不

数据结构(邓俊辉):有序向量(2.查找算法)

数据结构(邓俊辉):有序向量(2.查找算法) 首先 顺序查找 的很简单理解的,就是按顺序一个个从后到前查找(书中约定返回命中的多个相同元素的最大的秩)。 template typename TRank Vector :: find(T const e, Rank lo, Rank hi) const{while ((lo hi--) (

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值