//按照输入学生姓名删除节点
void delNode(char name[41])
{
NODE *pos = NULL;
NODE *walk = NULL;
NODE *prevNode = NULL;
NODE *freeNode = NULL;
pos = findNode(name);
if(pos == NULL)
{
printf("没有找到对应的学生信息!\n");
return;
}
else
{
//遍历链表,查找出删除节点的位置,并保存该节点前一个节点的指针位置(用prevNode保存)
for (walk = head; walk != NULL; walk = walk->link)
{
if(strcmp(walk->name, name) == 0)
{
break;
}
prevNode = walk;
}
//当preNode为空,表示删除的节点是头结点
if(prevNode == NULL)
{
freeNode = head;
head = head->link;
free(freeNode);
freeNode = NULL;
}
else
{
freeNode = prevNode->link;
prevNode->link = freeNode->link;
free(freeNode);
freeNode = NULL;
}
printf("删除成功!\n");
studentNumber--;
}
void delNode(char name[41])
{
NODE *pos = NULL;
NODE *walk = NULL;
NODE *prevNode = NULL;
NODE *freeNode = NULL;
pos = findNode(name);
if(pos == NULL)
{
printf("没有找到对应的学生信息!\n");
return;
}
else
{
//遍历链表,查找出删除节点的位置,并保存该节点前一个节点的指针位置(用prevNode保存)
for (walk = head; walk != NULL; walk = walk->link)
{
if(strcmp(walk->name, name) == 0)
{
break;
}
prevNode = walk;
}
//当preNode为空,表示删除的节点是头结点
if(prevNode == NULL)
{
freeNode = head;
head = head->link;
free(freeNode);
freeNode = NULL;
}
else
{
freeNode = prevNode->link;
prevNode->link = freeNode->link;
free(freeNode);
freeNode = NULL;
}
printf("删除成功!\n");
studentNumber--;
}
}
//打印现有的学生信息,可以删除
void printinfo()
{
NODE *walk;
printf("学生数量:%d\n", studentNumber);
for(walk = head; walk != NULL; walk = walk->link)
{
printf("%s %s %d\n", walk->name, walk->no, walk->xb);
}
printf("\n");
}