链表头指针在类外定义为extern,报错显示在其他源文件的obj中是无法解析的外部符号
时间: 2024-02-15 10:01:58 浏览: 28
如果你在一个源文件中定义了一个extern变量,其他源文件就可以通过extern关键字来声明这个变量并使用它。但是,如果你只声明了这个变量而没有定义它,编译器就会报错说这个变量是无法解析的外部符号。
所以,如果你在一个源文件中将链表的头指针定义为extern变量,其他源文件就需要通过extern关键字来声明这个变量,并且在某个源文件中进行定义。例如,假设你在一个源文件中定义了链表的头指针:
```cpp
// LinkedList.cpp
#include "LinkedList.h"
ListNode* head = NULL;
```
然后,在其他源文件中,你需要使用extern关键字来声明这个变量,例如:
```cpp
// OtherFile.cpp
extern ListNode* head;
```
这样,你就可以在OtherFile.cpp中使用这个头指针变量了。但是,你需要确保在某个源文件中进行了定义,否则编译器就会报错说这个变量是无法解析的外部符号。
相关问题
链表头指针在类内定义,其他源文件中显示未定义标识符
如果你在类内定义了链表的头指针,其他源文件就无法直接访问这个变量,因为它是在类的作用域内定义的。此时,你需要使用类的对象来访问这个头指针变量。
举个例子,假设你的链表类定义如下:
```cpp
class LinkedList {
public:
ListNode* head;
// ...
};
```
在其他源文件中,你需要先创建一个LinkedList对象,然后通过这个对象来访问头指针变量。例如,如果你想在另一个源文件中访问头指针变量,可以这样做:
```cpp
#include "LinkedList.h"
LinkedList myList;
myList.head = NULL; // 访问头指针变量并初始化为NULL
```
在这个例子中,我们先包含了LinkedList类的头文件,然后创建了一个LinkedList对象myList。接着,我们就可以通过这个对象来访问头指针变量head了。
当然,如果你想在其他源文件中频繁地访问头指针变量,也可以将它声明为extern变量,让其他源文件可以直接使用。例如,在头文件中声明:
```cpp
extern ListNode* head;
```
然后在链表类的实现文件中定义这个变量:
```cpp
#include "LinkedList.h"
ListNode* head = NULL;
```
这样,在其他源文件中就可以直接使用这个头指针变量了。
为什么在单循环链表中设置尾指针比设置头指针好?
在单循环链表中,设置尾指针比设置头指针更方便一些,原因如下:
1. 插入操作的实现更简单。如果使用头指针,每次插入或删除操作都需要遍历整个链表找到尾节点,然后再进行操作。而使用尾指针,则可以直接在尾节点后插入或删除节点,不需要遍历整个链表。
2. 遍历操作也更方便。如果使用头指针,需要先找到头节点,然后才能开始遍历整个链表。而使用尾指针,则可以从尾节点开始遍历,这样可以更方便地实现一些特定的操作,比如从链表末尾开始删除节点。
3. 实现代码的可读性更好。使用尾指针可以使代码更加简洁明了,因为不需要在每个操作中都进行头节点和尾节点的判断。
综上所述,单循环链表中设置尾指针比设置头指针更为方便和实用。
相关推荐
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)