46 lines
1.3 KiB
C
46 lines
1.3 KiB
C
|
#include <stdio.h>
|
||
|
#include <stdlib.h>
|
||
|
#include <stdbool.h>
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
STATE_EMPTY, //空的
|
||
|
STATE_COMPLETE, //满状态
|
||
|
STATE_INCOMPLETE, //可以添加
|
||
|
STATE_CPOYING //正在复制数据
|
||
|
} QueueState;
|
||
|
|
||
|
//定义节点
|
||
|
typedef struct node_linnk//2*10+2+2+2=26
|
||
|
{
|
||
|
unsigned short int *f_data;//2*10
|
||
|
unsigned short int f_size; //2
|
||
|
unsigned short int max; //这一秒钟内最大值
|
||
|
unsigned short int min;
|
||
|
struct node_linnk *next;
|
||
|
} node, *q_node;
|
||
|
|
||
|
//定义队列(保存队首和队尾指针)
|
||
|
typedef struct queue_link
|
||
|
{
|
||
|
unsigned short int max_size;
|
||
|
unsigned short int currentSize;
|
||
|
QueueState state;
|
||
|
unsigned short int max;
|
||
|
unsigned short int min;
|
||
|
char link_flag;
|
||
|
char mem_way;
|
||
|
q_node front;
|
||
|
q_node rear;
|
||
|
} que, *q_que;
|
||
|
|
||
|
void InitQueue(q_que *q, int num, char c);
|
||
|
bool EmptyQueue(q_que q);
|
||
|
void InsertQueue(q_que q, unsigned short int *src, int size, unsigned short int *max_min);
|
||
|
void DeleteQueue(q_que q);
|
||
|
void Display_f(q_que q);
|
||
|
void copy_data_up_v(q_que q, unsigned short int* sdst,unsigned char* cdst, int index);
|
||
|
void copy_data_stage(q_que q, unsigned char *dst, int index);
|
||
|
void copy_data_down(q_que q, unsigned short int *dst, int index);
|
||
|
void copy_data_up(q_que q, unsigned short int *dst, int index);
|