c语言数据结构队列链表

由用户输入一个长度为5的队列,前5个数据存储在前5个,输入第6个数据时挤出第一个,
要求输入一组含毛刺的数据,削平毛刺,即输出削平波动过大的数据(两个相邻的一阶导数之差不能太大)
通过数组或链表实现
程序为死循环(while)
急求!!!!!
谢谢大佬的帮助,急求

问题描述清楚一点,这样别人才能回答你的问题

如果不想自己做,就报个价吧。

给你提供一下解决思路.
void delHead();//专门删掉队首,当输入的时候,队列计数器为6的时候,删掉队首.
void delException();//专门删掉新新数字添加到队列后,两个相邻的一阶导数之差太大的数

#define DN 5
static int filter_buff[DN] = {0};
static int currdata_ptr = 0;

int Filter(int din)
{

int i, j, temp;
long sum = 0;

// currdata_ptr指向最旧的数据,并且需要卷回
if(currdata_ptr >= DN) {
    currdata_ptr = 0;
}
filter_buff[currdata_ptr++] = din;

// 进行排序,filter_buff[0]为最小值,filter_buff[DN-1]为最大值;
for (j=0;j<DN-1;j++)  
{  
    for (i=0;i<DN-j;i++)  
    {  
        if(filter_buff[i]>filter_buff[i+1]) {  
            temp =filter_buff[i];  
            filter_buff[i] =filter_buff[i+1];   
            filter_buff[i+1] = temp;  
        }  
    } 
    sum += filter_buff[j];
}  
// 去除最小值(最大值没有参与求和)
// 中位值平均滤波
sum -= filter_buff[0];

return (sum/(DN-2));    

}

// 上面是进行滤波的算法,去掉5个数中的最大值和最小值,输出平均值。
// 估计楼主应该是对系统的某个输入数据进行滤波处理,输入数据带有噪声,因此输入数据需要从其他软件构件传递过来。
// 楼主说的死循环是指嵌入式软件main程序里面的“超级大循环”吗?
// 这个大循环在每一个用这种前台/后台处理方式的嵌入式软件都有,应该没有必要在这里写出来。