⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 public.h

📁 使用置换选择排序和多路归并实现的外排序程序
💻 H
字号:
#ifndef PUBLIC_H
#define PUBLIC_H

#include<stdio.h>
#define MAX 10000
#define MAX_BUFFER 100000

struct node{
	int key;
	char infor[52];
};

/********* 缓冲区类,用环状数组实现的队列来实现之 **********/
//设置头指针front,尾指针rear
//插入在rear处,删除在front处
class Buffer{
	
	private:
		node * buf;	//存放元素的数组
		int front, rear;
		int n; //buffer中当前元素的数目
	
	public:
		
		//constructor
		Buffer(){
			buf = new node [MAX_BUFFER];
			front = 0;
			rear = 0;
			n = 0;
			
		}

		//destructor
		~Buffer(){
		delete buf;
		}

		//判断buffer是否为空
		bool isEmpty(){
			return (n==0);
		}

		//判断buffer是否满
		bool isFull(){
			return (n==MAX_BUFFER);
		}
		
		//往buffer中插入元素x
		bool insert(node x){
			if(isFull()==false){//非满
			buf[rear] = x;
			rear = (rear+1)%MAX_BUFFER;
			n++;
			return true;
			}
			else{
				printf("%s\n","BUFFER FULL!");
				return false;
			}
		}

		//从buffer中读取元素x,并在buffer中删除它
		bool read(node & x){
			if(isEmpty()==false){//非空
				x = buf[front];
				front = (front+1)%MAX_BUFFER;
				n--;
				return true;
			}
			else{
				printf("%s\n","BUFFER EMPTY!");
				return false;
			}
		}

		void flush(FILE  * outputFile){
			
			//写入输出文件
			int temp = front;
			for(int i = 0; i < n; i++){
				fprintf(outputFile,"%05d %s ", buf[temp % MAX_BUFFER].key,buf[temp%MAX_BUFFER].infor);
				temp++;
			}

			//清零
			n = 0;
			front = 0;
			rear = 0;
		}
		void list(){
			if (isEmpty()){
				printf("%s\n","no data!");
				return;
			}

			int temp = front;
			for(int i = 0; i < n; i++){
				printf("%d %s",buf[temp % MAX_BUFFER].key,buf[temp%MAX_BUFFER].infor);
				temp++;
			}
			printf("\n");
		}

};



#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -