int main() { CList *list = (CList*)malloc(sizeof(CList)); clist_init(list,destroy); Stu *stu = (Stu*)malloc(sizeof(Stu)); stu->age = 11; stu->name ="HeXinyuan"; clist_ins_next(list,NULL,(void *)stu); Stu *stu2 = (Stu*)malloc(sizeof(Stu)); stu2->age = 22; stu2->name ="ZhangJingli"; clist_ins_next(list,clist_head(list),(void *)stu2); Stu *newStu = createStu(33,"HeXiaoxiao"); clist_ins_next(list,clist_head(list),(void *)newStu); printf("clist_size()= %d\n",clist_size(list)); Stu *result = (Stu*)(clist_head(list)->data); CListElmt *head = clist_head(list); while(head!=NULL){ Stu* res = (Stu*)(head->data); printf("res->age = %d,res->name=%s\n",res->age,res->name); head = head->next; if(clist_head(list) == head){ break; } } void *dataStu; clist_rem_next(list,clist_head(list),&dataStu); printf("%d,%s\n",((Stu*)(dataStu))->age,((Stu*)(dataStu))->name); clist_destroy(list); return 0; }
int main(void) { int i; int* data[10]; CList list; // 10 test data for (i = 0; i< 10; i++) { data[i] = (int*)malloc(sizeof(int)); *data[i] = i; } list = clist_create(debug_free); //insert node after head for (i = 0;i < 5 ;i++) { clist_ins_next(list,clist_head(list),data[i]); clist_debug(list); } //insert node as head for (i = 0;i < 5 ;i++) { clist_ins_next(list,NULL,data[i+5]); clist_debug(list); } //remove node after head for (i = 0; i < 5 ;i++) { clist_rmv_next(list, clist_head(list), &data[i]); free(data[i]); clist_debug(list); } //remove head node for (i = 0; i < 3 ;i++) { clist_rmv_next(list, NULL, &data[i+5]); free(data[i+5]); clist_debug(list); } clist_destroy(list); return 0; }
int main() { CList list; CListElmt *element; clist_init(&list, free); int elements_left; int data1 = 4; int data2 = 9; clist_ins_next(&list, NULL, &data1); clist_ins_next(&list, clist_head(&list), &data2); elements_left = clist_size(&list); for (element = clist_head(&list); element != NULL && elements_left; element = clist_next(element), elements_left--) { printf("element->data = %d\n", *((int *) element->data)); } return 0; }
int main() { //linked list CList *l; int *data = 0; int *data1 = 1; int *data2 = 2; clist_init(l, (void *) &data); printf("Circular list has been initalized\n"); clist_ins_next(l, NULL, data); clist_ins_next(l, clist_head(l), data1); clist_ins_next(l, clist_next(clist_head(l)), data2); printf("Current linked list size %d\n", clist_size(l)); printf("Head elem %d\n", clist_head(l)->data); printf("Next of head %d\n", clist_head(l)->next->data); printf("Next next of head %d\n", clist_head(l)->next->next->data); clist_rem_next(l, clist_head(l)->next, (void *) &data2); clist_rem_next(l, clist_head(l), (void *) &data1); clist_rem_next(l, clist_head(l), (void *) &data); printf("Linked list has been cleared\n"); if (clist_size(l) == 0) { clist_destroy(l); printf("Circular list has been destroyed\n"); } else { printf("Can't delete list. It's not empty %d\n", clist_size(l)); }; return 0; }
/* --------------------------------- main -------------------------------- */ int main(int argc, char **argv) { CList list; CListElmt *element; int *data, i; /* Initialize the circular list */ clist_init(&list, free); /* Perform some circular list operations */ element = clist_head(&list); for (i = 0; i < 10; i++) { if ((data = (int *)malloc(sizeof(int))) == NULL) return 1; *data = i + 1; if (clist_ins_next(&list, element, data) != 0) return 1; if (element == NULL) element = clist_next(clist_head(&list)); else element = clist_next(element); } print_list(&list); element = clist_head(&list); for (i = 0; i < 10; i++) element = clist_next(element); data = clist_data(element); fprintf(stdout, "Circling and removing an element after the one containing " "%03d\n",*data); if (clist_rem_next(&list, element, (void **)&data) != 0) return 1; free(data); print_list(&list); element = clist_head(&list); for (i = 0; i < 15; i++) element = clist_next(element); data = clist_data(element); fprintf(stdout, "Circling and inserting 011 after the element containing " "%03d\n", *data); if ((data = (int *)malloc(sizeof(int))) == NULL) return 1; *data = 11; if (clist_ins_next(&list, element, data) != 0) return 1; print_list(&list); /* Destroy the circular list */ fprintf(stdout, "Destroying the list\n"); clist_destroy(&list); return 0; }
int main() { CList list; CListElmt *current; Page *p; int i; /* Initialize the circilar list. */ clist_init(&list, free); /* Load the pages into the list. */ current = NULL; for (i = 0; i < 10; ++i) { if ((p = (Page *)malloc(sizeof(Page))) == NULL) { return 1; } if (i < 5) { p->reference = 1; } else { p->reference = 0; } p->number = i; if (clist_ins_next(&list, current, p) != 0) { return 1; } if (current == NULL) { current = clist_next(clist_head(&list)); } else { current = clist_next(current); } } current = clist_head(&list); for (i = 0; i < 10; ++i) { p = clist_data(current); fprintf(stdout, "p[%d].number=%d, p[%d].reference=%d\n",i, p->number, i, p->reference); current = clist_next(current); } /* Get the number of the page to replace. */ current = clist_head(&list); i = replace_page(¤t); fprintf(stdout, "Selected %d\n", i); current = clist_head(&list); for (i = 0; i < 10; ++i) { p = clist_data(current); fprintf(stdout, "p[%d].number=%d, p[%d].reference=%d\n",i, p->number, i, p->reference); current = clist_next(current); } /* Destroy the circular list. */ fprintf(stdout, "Destroying the list\n"); clist_destroy(&list); return 0; }