int DmixObj;
void *pstAlgObj;
struct _struDmixAlgLink *next;
}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;
}