0

所以我使用多个 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--;
}
4

0 回答 0