int main() { int i = 0; int j = 0; DLLIST *item = NULL; for(i = 1; i <= 10; i++) { DLAppend(&tryList, 0, &i, sizeof(int)); } printList(); for(item = DLGetFirst(tryList); item != NULL; item = item->Next) { j = j + 1; if(j == 1 || j == 6 || j == 10) { item->Tag = 0; } else { item->Tag = 1; } printf("totalaa count = %d\r\n", DLCount(tryList)); } printf("j = %d\r\n", j); if(tryList != NULL) { for(item = DLGetFirst(tryList); item != NULL;) { DLLIST *nextItem = item->Next; if(item != NULL && item->Tag == 1) { if(item == DLGetFirst(tryList)) { printf("aaa\r\n"); tryList = item->Next; DLDelete(item); item = tryList; continue; } else { printf("bbb\r\n"); DLDelete(item); //item = nextItem; } } item = nextItem; } } printList(); }
printList() { DLLIST *item = NULL; for(item = DLGetFirst(tryList); item != NULL; item = item->Next) { int *i = item->Object; if(NULL == i) { printf("NULL in list\r\n"); } else { printf(" %d ", (*i)); } } printf("total count = %d\r\n", DLCount(tryList)); }
/* 查找当前技术报警的最高级别 return -1: error pInfo: 存放报警记录详细资料 */ static int GetTecAlarmClass(PB_ALM_INFO pInfo) { int res; int iListNum = 0; int iClass = -1; int i; DLLIST *FindAddr=NULL; //查找到的记录的地址 B_ALM_INFO *pFindInfo=NULL; //查找到的记录 B_ALM_INFO FindInfo; //查找到的记录 iListNum = DLCount((DLLIST *)gDListAlmTec); if(iListNum <=0) iClass = -1; //遍历链表,查找级别最高的记录 FindAddr = DLGetFirst(gDListAlmTec); for(i=0; i<iListNum;i++){ if(FindAddr != NULL){ // pthread_mutex_lock(&mtPhyAlm); pFindInfo = (B_ALM_INFO *)DLGetData(FindAddr, NULL, NULL); FindInfo = *pFindInfo; FindAddr = FindAddr->Next; // pthread_mutex_unlock(&mtPhyAlm); if(pFindInfo !=NULL){ if(FindInfo.bClass == ALARM_INFO) FindInfo.bClass = ALARM_OFF; if(iClass < FindInfo.bClass){ iClass = FindInfo.bClass; *pInfo = *pFindInfo; } //如果查到第一个高级报警的记录,就不用再查了 if(iClass >= ALARM_HIGH && iClass !=ALARM_INFO){ break; } } } else{ if(B_PRINTF) printf("%s:%d No Data Found.\n", __FILE__, __LINE__); } } return iClass; }