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