我需要使用以下代码,并将其修改为接受字符串作为参数,而不是整数。最后,我需要程序获取所有命令行参数,并将它们添加到字符串的链接列表中。
因此,如果输入是六七八,当我打印链表时,它将打印:八七六。
#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);
}
}
答案 0 :(得分:0)
如果向后打印解决方案是问题,只需保持指向第一个iNode的全局头部ptr。当你必须打印时,(headPtr.next!= null){printf(...); }
答案 1 :(得分:0)
我认为您的问题与列表中的项目顺序有关。
考虑到,使用链接列表,可以将项添加到头部,尾部或将它们插入任意位置。
看看insert()函数,它在哪里添加新项?
简单地说,您可以反转插入项目的顺序。在现实生活中,这可能不会太顺利。
也许保持尾指针? 并编写addItemToTail()函数?
答案 2 :(得分:0)
您应该阅读有关指针和内存的更多信息。学习的好地方是Stanford CS Education Library。你会发现关于链表的很好的材料。