#include #include struct block_ { int value; struct block_* next; }; typedef struct block_ block; typedef block* list; void remLast(list l) { block* b = l; while (b->next->next != NULL) b = b->next; b->next = NULL; } void showList(list l) { block* b = l; while (b != NULL) { printf("%d ", b->value); b = b->next; } puts(""); } list circularRotation(list l) { block* b = l; while (b->next->next != NULL) b = b->next; list first = b->next; first->next = l; b->next = NULL; return first; } int main(int argc, char * argv[]) { block b4 = {19, NULL}; block b3 = {15, &b4}; block b2 = {10, &b3}; block b1 = {5, &b2}; block b0 = {1, &b1}; list l = &b0; showList(l); remLast(l); showList(l); l = circularRotation(l); showList(l); return EXIT_SUCCESS; }