// Implement #include "bhlist.h" void InitList (Blist * L) { *L = NULL; } bool AddElem(Blist * L, int e) { Blist scan = *L; BNode * new = (BNode *) malloc (sizeof(BNode)); if (!new) { fprintf(stderr,"Memory error!\n"); return false; } new->data = e; new->next = NULL; if (!scan) { new->prior = NULL; *L = new; } else { while (scan->next) scan = scan->next; new->prior = scan; scan->next = new; } return true; } void DestroyList (Blist * L) { Blist t1 = *L; Blist t2; while (t1) { t2 = t1->next; free(t1); t1 = t2; } } void TraverseList(Blist * L) { Blist tmp = *L; Blist ta,tb; while (tmp) { printf("Element is %d\n",tmp->data); tb = tmp->prior; ta = tmp->next; if (tb) printf("It's prior element is %d, ",tb->data); else printf("No element before it, "); if (ta) printf("and it's next element is %d!\n",ta->data); else printf("No element after it!\n"); tmp = tmp->next; } puts("Traverse DONE!"); }