您的位置:首页 > 编程语言

单链表代码2

2015-12-23 11:34 232 查看
//按照输入学生姓名删除节点

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");

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C语言