Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
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;
}
Ejemplo n.º 3
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;
}
Ejemplo n.º 4
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;
}
Ejemplo n.º 5
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;

}
Ejemplo n.º 6
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(&current);
	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;
}