1. 定义链表节点结构体:
struct Node {
int data; // 节点数据
struct Node* next; // 指向下一个节点的指针
};
2. 创建链表节点函数:
struct Node* createNode(int data) {
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
if (newNode == NULL) {
// 内存分配失败处理
return NULL;
}
newNode->data = data;
newNode->next = NULL;
return newNode;
}
3. 在链表尾部插入节点函数:
void insertAtEnd(struct Node** head, int data) {
struct Node* newNode = createNode(data);
if (newNode == NULL) {
// 节点创建失败处理
return;
}
if (*head == NULL) {
*head = newNode;
} else {
struct Node* temp = *head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = newNode;
}
}
4. 删除指定值的节点函数:
void deleteNode(struct Node** head, int value) {
if (*head == NULL) {
// 链表为空
return;
}
struct Node* temp = *head;
struct Node* prev = NULL;
if (temp != NULL && temp->data == value) {
*head = temp->next;
free(temp);
return;
}
while (temp != NULL && temp->data != value) {
prev = temp;
temp = temp->next;
}
if (temp == NULL) {
// 未找到要删除的节点
return;
}
prev->next = temp->next;
free(temp);
}
5. 查询指定值的节点函数:
struct Node* searchNode(struct Node* head, int value) {
struct Node* temp = head;
while (temp != NULL) {
if (temp->data == value) {
return temp;
}
temp = temp->next;
}
return NULL;
}
这些是链表的基本操作示例,可以根据需要进行修改和扩展。记得在使用完毕后释放链表所占用的内存,避免内存泄漏。