C - 字符串链接列表

时间:2011-02-07 01:44:31

标签: c

我需要使用以下代码,并将其修改为接受字符串作为参数,而不是整数。最后,我需要程序获取所有命令行参数,并将它们添加到字符串的链接列表中。

因此,如果输入是六七八,当我打印链表时,它将打印:八七六。

#include <stdio.h>
#include <stdlib.h>

typedef struct iNode
{
    int myInt;
    struct iNode* next;
} IntNode, *IntNodePtr;

IntNodePtr insert(int i, IntNodePtr p)
{
    IntNodePtr newp = malloc(sizeof(struct iNode));
    newp->myInt = i;
    newp->next = p;
    return newp;
}

printlist(IntNodePtr p)
{
    if(p == NULL)
        printf("\n");
    else
    {
        printf("%d ", p->myInt);
        printlist(p->next);
    }
}

main(int argc, char* argv[])
{
    int n = 5;

    if(argc > 1)
    n = atoi(argv[1]);

    IntNodePtr iNodeList;
    iNodeList = NULL;
    int i = 0;

    while(i < n)
    {
        iNodeList = insert(i++, iNodeList);
        printf("List is now: ");
        printlist(iNodeList);
    }
}

3 个答案:

答案 0 :(得分:0)

如果向后打印解决方案是问题,只需保持指向第一个iNode的全局头部ptr。当你必须打印时,(headPtr.next!= null){printf(...); }

答案 1 :(得分:0)

我认为您的问题与列表中的项目顺序有关。

考虑到,使用链接列表,可以将项添加到头部,尾部或将它们插入任意位置。

看看insert()函数,它在哪里添加新项?

简单地说,您可以反转插入项目的顺序。在现实生活中,这可能不会太顺利。

也许保持尾指针? 并编写addItemToTail()函数?

答案 2 :(得分:0)

您应该阅读有关指针和内存的更多信息。学习的好地方是Stanford CS Education Library。你会发现关于链表的很好的材料。