面试题答案
一键面试- 场景一:链表操作
- 在链表操作中,使用
typedef
简化结构体定义,能使代码在创建节点、插入节点等操作时更易读。 - 示例代码:
- 在链表操作中,使用
// 使用typedef定义链表节点
typedef struct ListNode {
int data;
struct ListNode* next;
} ListNode;
// 创建新节点函数
ListNode* createNode(int value) {
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
newNode->data = value;
newNode->next = NULL;
return newNode;
}
// 插入节点到链表头部
void insertAtHead(ListNode** head, int value) {
ListNode* newNode = createNode(value);
newNode->next = *head;
*head = newNode;
}
在上述代码中,ListNode
代替了struct ListNode
,在函数createNode
和insertAtHead
中,代码看起来更加简洁,不需要每次都写struct
关键字。
- 场景二:图形编程中表示点或向量
- 在图形编程里,经常需要表示点或向量。使用
typedef
可以让代码更清晰地表达其用途。 - 示例代码:
- 在图形编程里,经常需要表示点或向量。使用
// 使用typedef定义二维点
typedef struct Point {
int x;
int y;
} Point;
// 计算两点间距离函数
double distance(Point p1, Point p2) {
return sqrt(pow(p1.x - p2.x, 2) + pow(p1.y - p2.y, 2));
}
这里Point
代表二维点,在distance
函数中使用Point
来表示参数,使代码直观地表达了函数的功能是计算两个点之间的距离,提高了代码可读性。