检查链表功能的正确性

时间:2013-10-16 23:16:19

标签: c pointers linked-list

所以我使用多个C文件和头文件创建一个可执行文件,我只需要创建不同链表操作的函数。我正在尝试使用通用数据,有一个C测试文件,可以测试我的功能。我现在不太相信它的正确性,所以我想知道,这里有三个功能,我要问看看这些是否有任何错误,我认为可能会有。 任何形式的见解都会有所帮助。我正在尝试创建一个工作的测试人员C文件,但到目前为止,我的项目的这一部分更重要。

打印出序列中的值

#ifdef GENERIC
void seq_print(Seq seq, void (*print_func)(void *)){
        if(seq->top == NULL){
            printf("%s %c", "There is no data to print.", '\n');
            return;
        }
        Node * p = seq->top;
        while(p != NULL){
            print_func(p->data);
            p = p->next;
        }
}
#else
void seq_print(Seq seq){}
#endif

添加到序列的前面

void seq_add_front(Seq seq, ETYPE val){
    printf("%s", "Running add_front \n");
    if(seq->top != NULL){
        Node * temp = seq->top;
        Node * newTop = malloc(sizeof(Node));
        newTop->data = val;
        newTop->next = seq->top;
        seq->top = newTop;
    }else{
        seq->top = malloc(sizeof(Node));
        seq->top->data = val;
    }
    seq->size++;
}

删除序列前面

 ETYPE seq_del_front(Seq seq){
    if(seq->top != NULL){
        ETYPE ret = seq->top->data;
        Node * prevTop = seq->top;
        seq->top = seq->top->next;
        free(prevTop);
        return ret; 
    }
    return;
    seq->size--;
}

0 个答案:

没有答案