C++线性链表的创建、增加、删除、修改、查询等操作,代码
时间: 2023-04-02 17:03:53 浏览: 82
我可以回答这个问题。以下是 C 线性链表的创建、增加、删除、修改、查询等操作的代码示例:
// 定义链表节点结构体
typedef struct Node {
int data; // 节点数据
struct Node *next; // 指向下一个节点的指针
} Node;
// 创建链表
Node *createList() {
Node *head = (Node *)malloc(sizeof(Node)); // 创建头节点
head->next = NULL; // 头节点的指针指向 NULL
return head;
}
// 在链表末尾添加节点
void addNode(Node *head, int data) {
Node *newNode = (Node *)malloc(sizeof(Node)); // 创建新节点
newNode->data = data; // 设置新节点的数据
newNode->next = NULL; // 新节点的指针指向 NULL
Node *p = head;
while (p->next != NULL) { // 找到链表末尾
p = p->next;
}
p->next = newNode; // 将新节点添加到链表末尾
}
// 删除链表中指定节点
void deleteNode(Node *head, int data) {
Node *p = head->next;
Node *pre = head;
while (p != NULL) {
if (p->data == data) { // 找到要删除的节点
pre->next = p->next; // 将前一个节点的指针指向下一个节点
free(p); // 释放要删除的节点的内存
return;
}
pre = p;
p = p->next;
}
}
// 修改链表中指定节点的数据
void modifyNode(Node *head, int oldData, int newData) {
Node *p = head->next;
while (p != NULL) {
if (p->data == oldData) { // 找到要修改的节点
p->data = newData; // 修改节点的数据
return;
}
p = p->next;
}
}
// 查询链表中指定节点的数据
int queryNode(Node *head, int data) {
Node *p = head->next;
while (p != NULL) {
if (p->data == data) { // 找到要查询的节点
return p->data; // 返回节点的数据
}
p = p->next;
}
return -1; // 没有找到节点,返回 -1
}