}struDmixAlgLinkObj, *pstDmixAlgLinkObj;
// test_link.cpp : 定义控制台应用程序的入口点。 // #include <stdlib.h> #include <string.h> #include "TL_DmixAlgLink.h" struDmixAlgLinkObj *g_pstruDmixAlgObj = NULL; //单向链表的创建 struDmixAlgLinkObj *DmixAlgInitList(int DmixObj, void *pstAlgObj) { struDmixAlgLinkObj *pNode; pNode = (struDmixAlgLinkObj *)malloc(sizeof(struDmixAlgLinkObj)); //éê??í·?áμ????? if(NULL == pNode) { return 0; } pNode->next =NULL; pNode->DmixObj = DmixObj; pNode->pstAlgObj = pstAlgObj; return pNode; } void LinkedListPopFront(struDmixAlgLinkObj **pstDmixAlgLinkHead) //í·é? { if (*pstDmixAlgLinkHead == NULL)//??á′±í { return; } else if ((*pstDmixAlgLinkHead)->next == NULL)//??óDò????áμ? { *pstDmixAlgLinkHead = NULL; } else { struDmixAlgLinkObj *tmp = (*pstDmixAlgLinkHead)->next;//tmp???ò?-?èí·?áμ????òμ???ò??????? free(*pstDmixAlgLinkHead); *pstDmixAlgLinkHead = tmp; } } int LinkedListInsert(struDmixAlgLinkObj **pstDmixAlgLinkHead,int DmixObj, void *pstAlgObj) { struDmixAlgLinkObj *pNode; struDmixAlgLinkObj *p; if(NULL == *pstDmixAlgLinkHead) { *pstDmixAlgLinkHead = DmixAlgInitList(DmixObj, pstAlgObj ); } else { struDmixAlgLinkObj *p = *pstDmixAlgLinkHead; while(p->next) { p = p->next; } p->next = DmixAlgInitList(DmixObj, pstAlgObj ); } return 1; } //单链表的删除,在链表中删除值为x的元素 void LinkedListDelete(struDmixAlgLinkObj **pstDmixAlgLinkHead,int DmixObj) { struDmixAlgLinkObj *p,*pre,*pnode; //pre为前驱结点,p为查找的结点。 if(NULL == *pstDmixAlgLinkHead) { return; } else { p = *pstDmixAlgLinkHead; pre = *pstDmixAlgLinkHead; while(p!=NULL) { if((p->DmixObj == DmixObj)) { break; } pre = p; p = p->next; } pnode = p; pre->next = pnode->next; if (pre == p) { *pstDmixAlgLinkHead = p->next; } free(p); } } //查找单向链表的内容 struDmixAlgLinkObj * LinkedListSearch(struDmixAlgLinkObj *pstDmixAlgLinkHead, int DmixObj, void **pstAlgObj) { struDmixAlgLinkObj *pNode; pNode = pstDmixAlgLinkHead; if(NULL == pstDmixAlgLinkHead) { return; } while(pNode!= NULL) { if((DmixObj == pNode->DmixObj)) { *pstAlgObj = pNode->pstAlgObj; //return pstDmixAlgLinkHead; break; } pNode = pNode->next; } return NULL; }
