一个链表问题,望精通数据结构的达人来帮忙!
我想写一个可以任意删除的链表,链表结构为下:
typedef struct _LIST
{
int8 Flag;
int8 Content[40];
struct _LIST* pNext;
}LIST;
LIST* g_MOList = NULL;
LIST* g_MOTemp = NULL;
LIST* g_MOTemp1 = NULL;
void ShanChu(void)
{
LIST* pNode = NULL;
pNode = g_MOTemp = g_MOTemp1 = g_MOList;
while(pNode != NULL)
{
if (pNode-> Flag== 1)
{
if(pNode == g_MOList)
{
if(g_MOList-> pNext != NULL)
g_MOList = pNode-> pNext;
else
g_MOListTail = g_MOList = NULL;
}
else
{
if(pNode-> pNext != NULL)
{
g_MOTemp1 = pNode-> pNext;
}
else
{
g_MOListTail = g_MOTemp1;
g_MOTemp1-> pNext = NULL;
}
}
}
else
{
g_MOTemp1 = pNode;
g_MOTemp= g_MOTemp1;
g_MOTemp= g_MOTemp-> pNext;
}
pNode = pNode-> pNext;
}
g_MOTemp = g_MOList;
return 0;
}
}
比如有一个链表括号里面表示该结点的Flag值
1(1),2(1),3(0),4(1),5(1)
删除结点的时候,第一个结点和第二个结点1和2都能够删除,但是
3,4,5结点就不能删除,不知道是哪里出了错误,还望朋友帮忙指出,谢谢!
[解决办法]
能否解释一下这段落
else
{
g_MOTemp1 = pNode;
g_MOTemp= g_MOTemp1;
g_MOTemp= g_MOTemp-> pNext;
}
好像什么也没做
[解决办法]
感觉很乱,你到底要做什么的
g_MOListTail这 个变量从哪里来的