Skip to content

Instantly share code, notes, and snippets.

@is3ka1
Last active December 10, 2019 13:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save is3ka1/862315ea5123d653520a8408b4fd6fbf to your computer and use it in GitHub Desktop.
Save is3ka1/862315ea5123d653520a8408b4fd6fbf to your computer and use it in GitHub Desktop.
It's the homework of my college, implementing a function to reverse a simple one-way linked list. And I think this function I came up with was fun.
/*
.
.
.
typedef struct reg {
int ID;
int score;
struct reg *next;
} tReg;
.
.
.
*/
void *_reverse_after(tReg *node) {
void **p;
if (node->next == NULL) {
p = malloc(sizeof(void *) * 2);
p[0] = node; // tail
} else {
p = _reverse_after(node->next);
*(tReg **)p[1] = node;
}
p[1] = &node->next;
return p;
}
void reverse(tReg **head) {
void **p = _reverse_after(*head);
*head = p[0];
*(tReg **)p[1] = NULL;
free(p);
}
/*
.
.
.
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment