数据结构 链队列的建立及其函数 C语言版
来源:互联网 发布:故宫神思知乎 编辑:程序博客网 时间:2024/06/05 17:43
#include <cstdio>#include <stdlib.h>typedef int QueueElementType;typedef struct Node{ QueueElementType data; struct Node *next;} LinkQueueNode; //定义队列结点typedef struct{ LinkQueueNode *front; //队列头结点指针 LinkQueueNode *rear; //队列尾结点指针} LinkQueue; //定义队列int InitQueue(LinkQueue *Q ) //初始化队列{ Q->front=(LinkQueueNode * )malloc(sizeof(LinkQueueNode)); if(Q->front != NULL) { Q->rear=Q->front; Q->front->next=NULL; return 1; } else return 0;//溢出}int EnterQueue(LinkQueue *Q,QueueElementType x) //元素x入链队列 尾插法{ LinkQueueNode * newnode; newnode=(LinkQueueNode *) malloc(sizeof(LinkQueueNode)); if(newnode != NULL) { newnode->data=x; newnode->next=NULL; Q->rear->next=newnode; Q->rear=newnode; return 1; } else return 0;}int GetHead(LinkQueue *Q,QueueElementType *x){ if(Q->front==Q->rear && Q->front->next==NULL) return 0; *x=Q->front->next->data; return 1;}int DeleteQueue(LinkQueue *Q,QueueElementType *x ) //链队列出队 从开始的头开始取{ LinkQueueNode *p; if(Q->front==Q->rear) return 0; p=Q->front->next; Q->front->next=p->next; if(Q->rear==p ) Q->rear=Q->front; //如果去掉结点p后,队列为空 不要忘记将队列置空 *x=p->data; free(p); return 1;}int IsEmpty(LinkQueue *Q) //队列为空返回1 不为空返回0{ if(Q->front==Q->rear ) return 1; else return 0;}int N; //杨辉三角总行数void YangHuiTriangle() //打印杨辉三角{ LinkQueue Que; InitQueue(&Que); EnterQueue(&Que,1); for(int n=2;n<=N;n++) //生成到N行数据 打印出N-1行数据 { EnterQueue(&Que,1); for(int i=1;i<=n-2;i++) { int temp,x; DeleteQueue(&Que,&temp); printf("%d ",temp); GetHead(&Que,&x); EnterQueue(&Que,x+temp); } int end; DeleteQueue(&Que,&end); printf("%d\n",end); EnterQueue(&Que,1); } int endh; while(!IsEmpty(&Que)) //打印第N行(最后一行)数据 m { DeleteQueue(&Que,&endh); printf("%d ",endh); } return ;}int main(){ LinkQueue Q ;int n,num; InitQueue(&Q); printf("输入要输入链队列的数的个数及要输入的数\n"); scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&num); if(!EnterQueue(&Q,num)) printf("队列满\n"); } printf("队列的头为:\n");; int x; if(GetHead(&Q,&x)) printf("%d\n",x); else printf("该队列已经为空 不存在队列头\n"); printf("输入的数据依次出队\n"); while(DeleteQueue(&Q,&num)) printf("%d ",num); printf("\n"); printf("输入要打印的杨辉三角的行数 至少为2\n"); scanf("%d",&N); YangHuiTriangle(); return 0;}
阅读全文
0 0
- 数据结构 链队列的建立及其函数 C语言版
- 数据结构 顺序串的建立及其函数 C语言版
- 数据结构-队列(C语言版)
- 《数据结构(C语言版)》- 队列
- 数据结构 链表 单链表的建立 C语言版
- 数据结构 图的建立 C语言版
- 数据结构(C语言版)链队列的基本操作
- 数据结构(1)队列(C语言版)
- 数据结构之队列(C语言版)
- 数据结构 栈的建立及入栈出栈操作 C语言版
- 数据结构 链表 循环单链表的建立 C语言版
- 数据结构 树 二叉树的建立及遍历 C语言版
- 链队列-C语言版
- 学习笔记------数据结构(C语言版) 队列的顺序存储/循环队列
- 数据结构(C语言版)”栈与队列“章节迷宫求解问题的思路与实现
- 数据结构之数组及其操作(C语言版)
- 数据结构(c语言版)链表的实现以及合并
- 数据结构C语言版之链表的操作
- python 字典的排序
- 用程序的思维工作——不仅仅在工作时写程序
- python里函数怎么样使用元组或字典作为参数调用
- poj 1836 Alignment(最长上升子序列)
- 《python》---数组和多维数组的产生
- 数据结构 链队列的建立及其函数 C语言版
- 线搜索技术-进退法
- javascript:自执行函数
- jvm对象存储机制
- Annotation(注解)
- h5+css3+js实现七夕言情
- vi编辑器的常见命令
- Matlab对二值图像进行轮廓提取
- Rgb颜色和十六进制颜色值的相互转换