C中的链表清单字母表(有序插入)问题

时间:2014-10-03 00:22:14

标签: c sorting linked-list nodes insertion-sort

我正在尝试编写一个程序,它将从文本文件中读取输入,解析信息,将其放入链表的节点中,然后允许您输入关键字并从列表中获取答案。

我在下面编写了一个应该进行排序插入的函数,并根据字母顺序插入到列表中。

目前,当我在此文本上运行此程序时:

ZEEKS,BOB

GOYLE,FRANK

布朗,詹姆斯

SMITH,BILL

EARL,JOE

我得到姓氏的输出:

BROWN

EARL

SMITH

高尔

ZEEKS

以下是我用来尝试进行按字母顺序排列的插入功能:

nodeType *insertNodeNewTest(nodeType *head, nodeType *newNode)
{
nodeType *temp = NULL;

temp = head;
nodeType *prev = NULL;

if(head == NULL)
{
    newNode->next = NULL;
    head = newNode;

    return head;
}

else if(strcmp(newNode->lastname, temp->lastname) < 0)  //this
{
    puts("car");

    newNode->next = temp;
//  newNode = head;

    head = newNode;

    return head;
}
else
{

    while(temp != NULL)
    {
        prev = temp;
        temp = temp->next;

        if(prev == NULL)
        {
            printf("prev null");
        }

        if(strcmp(newNode->lastname, prev->lastname) > 0)
        {

             prev->next = newNode;
             newNode->next = temp;

             return head;
        }
    }
}

temp->next = newNode;
newNode->next = NULL;

return head;

}

我很确定我处理了所有插入的情况(第一个,中间的,最后一个),所以我认为问题是在变量名称的变化中,也许在while循环中?究竟是怎么回事?

我非常感谢你们给予的任何帮助!

0 个答案:

没有答案