//只有一个
if
(NULL == g_stHead->next)
{
//只有一个且为所要删除的节点
if (!(strcmp(chStr, g_stHead->chName)))
{
free(g_stHead);
g_stHead
= NULL;
printf("\n删除成功\n\n\r");
return
OK;
}
printf("未找到符合条件的节点\n\r");
return ERROR;
}
struct
STU *stTemp = NULL;
struct
STU *stPre = NULL;
stTemp
= g_stHead;
stPre
= stTemp;
while
((strcmp(chStr, stTemp->chName)) && (NULL != stTemp->next))
{
stPre = stTemp ;
stTemp = stTemp->next ;
}
//多个节点且第一个为所要删除的节点
if
(g_stHead == stTemp)
{
stTemp = g_stHead->next ;
free(g_stHead);
g_stHead = stTemp ;
printf("\n删除成功\n\n\r");
return OK;
}
if
(NULL == stTemp->next)
{
//多个节点且所要删除的节点是尾节点
//printf("%s\n",
stTemp->chName);
//printf("%s\n", chStr);
if (!(strcmp(chStr, stTemp->chName)))
{
stPre->next
= NULL ;
free(stTemp);
stTemp
= NULL;
printf("\n删除成功\n\n\r");
return
OK;
}
printf("未找到符合条件的节点\n\r");
return ERROR;
}
//多个节点且所要删除的节点是中间节点
stPre->next
= stTemp->next;
free(stTemp);
stTemp
= NULL;
printf("\n删除成功\n\n\r");
return
ERROR;
}
void Insert(void)
{
struct
STU *stNode = NULL;
stNode
= (struct STU *)malloc(LEN);
if
(NULL == stNode)
{
exit(-1) ;
}
memset(stNode,
0, sizeof(LEN));
printf("学生学号:");
scanf("%ld",&stNode->lNumber);
printf("学生姓名:");
scanf("%s",stNode->chName);
printf("语文成绩:");
scanf("%d",&stNode->iChinese);
printf("数学成绩:");
scanf("%d",&stNode->iMath);
//g_stHead
= p1;
struct
STU *stTemp = NULL;
//链表为空
if
(NULL == g_stHead)
{
g_stHead = (struct STU
*)malloc(sizeof(LEN));
if (NULL == g_stHead)
{
exit(-1)
;
}
memset(g_stHead, 0, sizeof(LEN));
strcpy(g_stHead->chName,
stNode->chName);
g_stHead->lNumber =
stNode->lNumber;
g_stHead->iChinese =
stNode->iChinese;
g_stHead->iMath = stNode->iMath;
}
//只有一个节点
else
{
if (NULL == g_stHead->next)
{
stTemp
= (struct STU *)malloc(sizeof(LEN));
if
(NULL == stTemp)
{
exit(-1);
}
memset(stTemp,
0, sizeof(LEN));
strcpy(stTemp->chName,
stNode->chName);
stTemp->lNumber
= stNode->lNumber;
stTemp->iChinese
= stNode->iChinese;
stTemp->iMath
= stNode->iMath;
g_stHead->next
= stTemp;
}
//多个结点
else
{
stTemp
= g_stHead;
while
(NULL != stTemp->next)
{
stTemp = stTemp->next;
}
stTemp->next
= (struct STU *)malloc(sizeof(LEN));
if
(NULL == stTemp->next)
{
exit(-1);
}
memset(stTemp->next,
0, sizeof(LEN));