#include "linked_list.h" #include "stdlib.h" ALARM_NODE_T * pList_head = NULL; uint8_t alarm_list_cnt = 0; ///*Á´±íÍ·Êý¾Ý¹¹Ôì*/ //ALARM_NODE_T * Alarm_List_Node_HeadCreated(ALARM_NODE_T * pHead,SYS_ALARM_VALVE_T alarm_id) //{ // if(pHead->list_data == AV_NORMAL && pHead->alarm_list_next == NULL) // { // pHead->list_data = alarm_id; // } // return pHead; //} /*ÉêÇ붯̬Á´±í¿Õ¼ä*/ ALARM_NODE_T * Alarm_List_Node_Add(SYS_ALARM_VALVE_T alarm_id) { ALARM_NODE_T * ptr = (ALARM_NODE_T * )malloc(ALARM_LIST_NODE_LEN); if(ptr != NULL) { ptr->list_data = alarm_id; ptr->alarm_list_next = NULL; return ptr; } return NULL; } //µ¥Á´±íβ²å //Ë«ÖØÖ¸Õ룺ָÏòÖ¸ÕëµÄÖ¸Õ룬Èç¹ûÐè¸Ä±äÖ¸ÕëµØÖ·µÄÖµ£¬Ôò¿ÉÓÃË«ÖØÖ¸Õë void Alarm_List_Node_PushBack(ALARM_NODE_T ** ppList,SYS_ALARM_VALVE_T alarm_id) { ALARM_NODE_T * tail, * now_ptr; if(alarm_id != ALARM_ID_NORMAL) { alarm_list_cnt++; if(*ppList == NULL) { *ppList = Alarm_List_Node_Add(alarm_id); } else { //ÅжÏÁ´±íÖÐÊÇ·ñÒѾ­´æÔڸñ¨¾¯id£¬ÒѾ­´æÔÚ²»ÔÙ²åÈëÁ´±í do{ if(now_ptr->list_data == alarm_id){ return; }else{ now_ptr = now_ptr->alarm_list_next; } }while(now_ptr != NULL); tail = *ppList; while(tail->alarm_list_next) tail = tail->alarm_list_next; tail->alarm_list_next = Alarm_List_Node_Add(alarm_id); } } } //µ¥Á´±íµÄβɾ void Alarm_List_Node_PopBack(ALARM_NODE_T ** ppList) { ALARM_NODE_T * tail = *ppList; while (tail->alarm_list_next->alarm_list_next) { tail = tail->alarm_list_next; } free(tail->alarm_list_next); tail->alarm_list_next = NULL; } ////µ¥Á´±í²éÕÒ //ALARM_NODE_T * Alarm_List_Node_Find(ALARM_NODE_T * pList,SYS_ALARM_VALVE_T alarm_id) //{ // ALARM_NODE_T * cur_ptr = pList; // while(cur_ptr) // { // if(cur_ptr->list_data == alarm_id) // return cur_ptr; // cur_ptr = cur_ptr->alarm_list_next; // } // return NULL; //} //µ¥Á´±íÖмäɾ³ý void Alarm_List_Node_Deleted(ALARM_NODE_T ** ppHeadList,SYS_ALARM_VALVE_T alarm_id) { if(alarm_id != ALARM_ID_NORMAL) { ALARM_NODE_T * last_ptr,* now_ptr; if(*ppHeadList == NULL) return; else { now_ptr = *ppHeadList; while(now_ptr->alarm_list_next != NULL && now_ptr->list_data != alarm_id) { last_ptr = now_ptr; now_ptr = now_ptr->alarm_list_next; } if(now_ptr->list_data == alarm_id) { alarm_list_cnt--; if(now_ptr == *ppHeadList) *ppHeadList = now_ptr->alarm_list_next; else last_ptr->alarm_list_next = now_ptr->alarm_list_next; free(now_ptr); now_ptr = NULL; } } } }