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

📄 ssp_sll.c

📁 abstract rtos
💻 C
字号:
#include "syscfg.h"#ifdef __cplusplus#if __cplusplusextern "C"{#endif #endif #include "aos.h"SLL_NODE_S *SLL_Find(SLL_S *pList, VOID *pKey, 	S32 (*fnValCmp)(VOID *, SLL_NODE_S *)){	SLL_NODE_S *pNode;		SLL_Scan(pList, pNode, SLL_NODE_S *)	{		if (!fnValCmp(pKey, pNode))			return pNode;	}	return NULL;}VOID SLL_Insert_In_Middle (SLL_S *pList, SLL_NODE_S *pPrev, SLL_NODE_S *pMid, SLL_NODE_S *pNext){ pList->u4_Count++; pMid->pNext  = pNext; pPrev->pNext = pMid; if(pNext == &pList->Head) pList->Tail = pMid;}VOID SLL_Delete_In_Middle (SLL_S *pList, SLL_NODE_S *pPrev, SLL_NODE_S *pNode, SLL_NODE_S *pNext){  if(pNext == &pList->Head) pList->Tail = pPrev; pPrev->pNext = pNext; SLL_Init_Node(pNode); pList->u4_Count--;}VOID SLL_Delete (SLL_S *pList, SLL_NODE_S *pNode){ SLL_NODE_S *pPrev;  if(!(SLL_Is_Node_In_List(pNode))) return; if((pPrev = SLL_Previous(pList,pNode)) == NULL)    pPrev = &pList->Head; SLL_Delete_In_Middle(pList,pPrev,pNode,pNode->pNext);}SLL_NODE_S *SLL_Get (SLL_S  *pList){ SLL_NODE_S *pRetNode; if(SLL_Count(pList) == 0) return(NULL); pRetNode = pList->Head.pNext; SLL_Delete_In_Middle(pList,&pList->Head,pList->Head.pNext,pList->Head.pNext->pNext); return(pRetNode);}VOID SLL_Insert (SLL_S *pList, SLL_NODE_S *pPrev, SLL_NODE_S *pNode){ if(pPrev == NULL) pPrev = &pList->Head; SLL_Insert_In_Middle(pList,pPrev,pNode,pPrev->pNext);}SLL_NODE_S *SLL_Previous (SLL_S *pList, SLL_NODE_S *pNode){ SLL_NODE_S *pPrev; if(pNode == NULL) return(SLL_Last(pList)); if (!SLL_Count(pList))	 return NULL; for(pPrev = &pList->Head; pNode != pPrev->pNext ; pPrev = pPrev->pNext) { } return((pPrev == &pList->Head) ? NULL : pPrev);}VOID SLL_FreeAll (SLL_S *pList, VOID (*fnFree)(VOID *)){ SLL_NODE_S *pTempNode,*pNode,*pHead; for(pHead = &pList->Head,pNode = pList->Head.pNext; pNode != pHead; pNode = pTempNode){     pTempNode = pNode->pNext;     fnFree(pNode); } SLL_Init(pList);}S32 SLL_Walk(SLL_S *pList, VOID (*fnVisit)(SLL_NODE_S *)){	SLL_NODE_S *pNode;	S32 nCnt;	nCnt = 0;	SLL_Scan(pList, pNode, SLL_NODE_S *)	{		fnVisit(pNode);		nCnt++;	}	return nCnt;}#ifdef __cplusplus#if __cplusplus}#endif #endif 

⌨️ 快捷键说明

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