遍历结构链接的字符串列表(C编程)

时间:2014-04-17 02:15:18

标签: c linked-list

如果C中的结构定义为

struct StringList{ char* value; struct StringList* next; };

我必须从头部打印每个元素的值的地址

所以我有:

void print (struct StringList* head){ 

    struct StringList* sp = Head;
    while ((sp->next)->next != NULL){
        printf( "value: %d", &sp->value);    
    }

我发布的程序员交流太不确定哪个网站更合适

2 个答案:

答案 0 :(得分:2)

您将在空元素或单元素列表上崩溃。您的循环条件应该更改,并且您正在打印指针,因此您需要使用正确的格式,并且您没有更新循环体中的sp

while (sp != NULL)
{
    //printf("Value: %d\n", sp->value);
    printf("Address: %p\n", (void *)&sp->value);
   sp = sp->next;
}

答案 1 :(得分:2)

您不需要额外的sp变量。你也没有在while循环中更新它。还

(sp->next)->next!=NULL

如果sp->next为NULL,

将崩溃。我正在通过重复使用head变量来展示一种方法。

void print (struct StringList* head){ 
    while (head != NULL){
        printf( "value: %p", &(head->value));    
        head = head->next;
    }
}