c - 几个函数的未定义引用错误
问题描述
在运行此 c 程序以实现链表操作时,我收到几个函数的未定义引用错误,例如对 create_list 的未定义引用、对 display 的未定义引用等。我也在这个站点上阅读过这个错误,但我没有得到确切的含义这些错误。我对这个错误一无所知,所以请帮助我理解这些错误。
#include < stdio.h >
#include < stdlib.h >
struct node {
int info;
struct node * link;
};
struct node * create_list(struct node * start);
void display(struct node * start);
void count(struct node * start);
void search(struct node * start, int data);
struct node * addatbeg(struct node * start, int data);
struct node * addatend(struct node * start, int data);
struct node * addafter(struct node * start, int data, int item);
struct node * addbefore(struct node * start, int data, int item);
struct node * addatpos(struct node * start, int data, int pos);
struct node * del(struct node * start, int data);
struct node * reverse(struct node * start);
main() {
struct node * start = NULL;
int choice, data, item, pos;
while (1) {
printf("1.Create list\n");
printf("2.Display\n");
printf("3.Count\n");
printf("4.Search\n");
printf("5.Add to empty list/Add at beginning\n");
printf("6.Add at end\n");
printf("7.Ad after node\n");
printf("8.Add before node\n");
printf("9.Add at position\n");
printf("10.Delete\n");
printf("11.Reverse\n");
printf("12.quit\n");
printf("Enter your choice:\n");
scanf("%d", & choice);
switch (choice) {
case 1:
start = create_list(start);
break;
case 2:
display(start);
break;
case 3:
count(start);
break;
case 4:
printf("Enter the elements to be searched:");
scanf("%d", & data);
search(start, data);
break;
case 5:
printf("Enter the element to be inserted");
scanf("%d", & data);
start = addatbeg(start, data);
break;
case 6:
printf("Enter the element to be inserted: ");
scanf("%d", & data);
start = addatend(start, data);
break;
case 7:
printf("Enter thee element to be inserted");
scanf("%d", & data);
printf("Enter the element after which to insert");
scanf("%d", & item);
start = addafter(start, data, item);
break;
case 8:
printf("Enter the element to be inserted: ");
scanf("%d", & data);
printf("Enter the element before which to insert");
scanf("%d", & pos);
start = addbefore(start, data, item);
break;
case 9:
printf("Enter the element to be inserted");
scanf("%d", & data);
printf("Enter the position at which to insert");
scanf("%d", & data);
break;
case 10:
printf("Enter the elements to be deleted");
scanf("%d", & data);
start = del(start, data);
break;
case 11:
start = reverse(start);
break;
case 12:
exit(1);
default:
printf("Wrong choice\n");
}
}
}
解决方案
你的程序已经声明了函数,但它没有定义它们。您所做的只是告诉它如何调用create_list
,而不是告诉它应该如何实现该功能。
是否有另一个文件与这个文件一起使用?很有可能,这些函数是在另一个文件中定义的,您需要告诉编译器使用该文件的编译输出来定义这些函数。
推荐阅读
- r - Adding a vector to params in YAML header
- java - How to properly code this one to many relationship according to design
- javafx - 如何从用 Kotlin 编写的 gradle 项目创建 javaFX jar
- javascript - 为什么Express中会自动弹出一个变量?
- c - 为什么 malloc 不将分配的内存初始化为零?
- python - 无法使用 Python、Selenium 从下拉列表中选择一个选项
- mysql - MySQL 查询(子查询 + 组合函数 + JOIN 操作)运行时间过长
- reactjs - 在 React Router Dom 中设置不属于 App.js 的独立路由的正确方法是什么?
- python - Tkinter Python 中的进度条
- json - Powershell Invoke-RestMethod 将 XML 响应转换为 JSON 文本