链队的一些操作
来源:互联网 发布:pla 算法初始化 编辑:程序博客网 时间:2024/04/20 00:09
头文件
#ifndef _LINKQUEUE_H_#define _LINKQUEUE_H_#define SUCCESS 10000#define FAILURE 10001typedef int ElemType;typedef struct node{ ElemType data; struct node *next;}Node;typedef struct queue{ Node *front; Node *rear;}Queue;#endif
接口函数
#include<stdio.h>#include"Linkqueue.h"#include<stdlib.h>int InitQueue(Queue *Q){ Q->front=(Node *)malloc(sizeof(Node)); if(NULL == Q->front) { return FAILURE; } Q->front->next = NULL; Q->rear=Q->front; return SUCCESS;}int EnQueue(Queue *Q,ElemType e){ Node *p=(Node *)malloc(sizeof(Node)); p->data = e; p->next = NULL; Q->rear->next =p; Q->rear = p; return SUCCESS;}int QueueLength(Queue Q){ Node *p = Q.front; int count=0; while(p->next!=NULL) { count++; p=p->next; } return count;}int GetFront(Queue Q){ if(Q.front->next==NULL) { return FAILURE; } return (Q.front->next->data);}int DelQueue(Queue *Q){ ElemType e; Node *p=Q->front->next; if(p==NULL) { return FAILURE; } Q->front->next=p->next; e=p->data; free(p); if(Q->front->next==NULL) { Q->rear=Q->front; } return e;}int ClearQueue(Queue *Q){ Node *p=Q->front->next; if(p==NULL) { return FAILURE; } while(p!=NULL) { Q->front->next=p->next; free(p); p=Q->front->next; if(Q->front->next==NULL) { Q->rear=Q->front; } } return SUCCESS;}int DestroyQueue(Queue *Q){ free(Q->front); Q->front=NULL; Q->rear=NULL; return SUCCESS;}
主函数
#include<stdio.h>#include"Linkqueue.h"int main(){ int ret,i; ElemType e; Queue sq; ret=InitQueue(&sq); if(ret==FAILURE) { printf("Init Failure!\n"); } else { printf("Init Success!\n"); } for(i=0;i<8;i++) { e = i+1; ret=EnQueue(&sq,e); if(ret==FAILURE) { printf("Enter Failure!\n"); } else { printf("Enter %d Success!\n",e); } } printf("The length is %d \n",QueueLength(sq)); printf("The front is %d \n",GetFront(sq)); for(i=0;i<7;i++) { ret = DelQueue(&sq); if(ret == FAILURE) { printf("Delete Failure!\n"); } else { printf("Delete %d Success!\n",ret); } } ret = ClearQueue(&sq); if(ret == FAILURE) { printf("Clear Failure!\n"); } else { printf("Clear Success!\n"); } printf("The length is %d \n",QueueLength(sq)); ret = DestroyQueue(&sq); if(FAILURE == ret) { printf("Destroy Failure!\n"); } else { printf("Destroy Success!\n"); } return 0;}
阅读全文
0 0
- 链队的一些操作
- 链表的一些操作
- 链表的一些操作
- 链栈的一些操作
- 链表的一些操作
- 链栈的一些操作
- 链表的一些操作
- 链表的一些操作
- 链表的一些操作
- 链表的一些操作
- 链栈的一些操作
- 关于线性链表的一些操作
- C语言 链表的一些操作
- 链表的一些基本操作
- 静态链表的一些操作
- 双循环链表的一些操作
- 链表操作时的一些注意事项
- 顺序链表的一些操作
- 图像处理之特征提取:HOG特征简单梳理
- Hangfire在ASP.NET CORE中的简单实现
- HAVING&WHERE
- C语言 机器字节序、大小端的判断与修改
- idea Commit Changes Dialog local changes refresh
- 链队的一些操作
- C++构造函数与析构函数(一)
- 吴恩达深度学习课程deeplearning.ai课程作业:Class 2 Week 1 3.Gradient Checking
- 基于神经网络的实体识别和关系抽取联合学习 | PaperWeekly #54
- 基于Java的卡诺图化简
- SQL:DML&DDL
- 解决SwipeRefreshLayout下拉刷新与SwipeMenuListView的冲突
- 间断初值双曲守恒问题的Lax-Friedrichs和后向欧拉数值解法
- Java Web后端--入职技能任务单(新增插件信息)八