Code:#include <stdio.h> #include <stdlib.h> #include <assert.h> struct stNode { int data; unsigned long Way; }; struct stNode *AppendData(int data, struct stNode* list); void GoList(struct stNode *list); int main(void) { struct stNode *l2 = AppendData(2, NULL); struct stNode *l1 = AppendData(1, l2); struct stNode *l3 = AppendData(3, l2); struct stNode *l4 = AppendData(4, l3); printf("front -> back....\n"); GoList(l1); printf("back -> front....\n"); GoList(l4); return 0; } struct stNode *AppendData(int data, struct stNode *list) { struct stNode *GetNew = malloc(sizeof(struct stNode)); assert(GetNew); GetNew->Way = (unsigned long)list; GetNew->data = data; if(list != NULL) list->Way ^= (unsigned long)GetNew; return GetNew; } void GoList(struct stNode *list) { unsigned long prev = 0; while(list != NULL) { unsigned long next = prev ^ list->Way; printf("%d ", list->data); prev = (unsigned long)list; list = (struct stNode *)next; } printf("\n"); }
Bookmarks