Hit9 Blog Wiki Project Links Archives Resumé
Page: First UP Pre Next Back

reverse singly linked list in C

Fork me on GitHub

允许转载, 但转载请注明出处

Date:2012-10-15

解决方案:

typedef struct node{
    char *data; 
    struct node *next; 
}node_t; 

node_t *reverse(node_t *head)
{
    node_t *q = 0, *t;
    for (; head; t = head->next, head->next = q, q = head, head = t); 
    return q; 
}

测试:

//test
int main(int argc, const char *argv[])
{
    node_t d = {"d", 0}, c = {"c", &d}, b = {"b", &c}, a = {"a", &b}, *t = 0;

    for (t = &a; t; t = t->next)//print list
        printf("%s\n", t->data);
    node_t *s = reverse(&a); 
    for (t = s; t; t = t->next)//print list
        printf("%s\n", t->data);
    return 0;
}


Support:mkdwiki