要修改鏈表中的某個節(jié)點的信息,可以按照以下步驟進行操作:
遍歷鏈表,找到要修改的節(jié)點。
修改節(jié)點的信息。
具體代碼示例如下:
#include <stdio.h>
#include <stdlib.h>
// 定義鏈表節(jié)點結(jié)構(gòu)體
typedef struct Node {
int data; // 節(jié)點數(shù)據(jù)
struct Node* next; // 指向下一個節(jié)點的指針
} Node;
// 創(chuàng)建鏈表
Node* createLinkedList(int arr[], int n) {
Node* head = NULL; // 頭節(jié)點指針
Node* tail = NULL; // 尾節(jié)點指針
for (int i = 0; i < n; i++) {
// 創(chuàng)建新節(jié)點
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = arr[i];
newNode->next = NULL;
if (head == NULL) {
// 第一個節(jié)點
head = newNode;
tail = newNode;
} else {
// 鏈接到尾節(jié)點后面
tail->next = newNode;
tail = newNode;
}
}
return head;
}
// 修改鏈表節(jié)點的信息
void modifyNode(Node* head, int pos, int newData) {
Node* p = head;
int count = 1;
// 遍歷鏈表,找到要修改的節(jié)點
while (p != NULL && count < pos) {
p = p->next;
count++;
}
if (p == NULL || count > pos) {
// 找不到要修改的節(jié)點
printf("Invalid position!\n");
return;
}
// 修改節(jié)點的信息
p->data = newData;
}
// 打印鏈表
void printLinkedList(Node* head) {
Node* p = head;
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
// 釋放鏈表的內(nèi)存
void freeLinkedList(Node* head) {
Node* p = head;
while (p != NULL) {
Node* temp = p; // 保存當(dāng)前節(jié)點的指針
p = p->next; // 移動到下一個節(jié)點
free(temp); // 釋放當(dāng)前節(jié)點的內(nèi)存
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
Node* head = createLinkedList(arr, n);
printf("Original linked list: ");
printLinkedList(head);
modifyNode(head, 3, 10);
printf("Modified linked list: ");
printLinkedList(head);
freeLinkedList(head);
return 0;
}
輸出結(jié)果:
Original linked list: 1 2 3 4 5
Modified linked list: 1 2 10 4 5
在上面的代碼中,modifyNode()
函數(shù)用于修改鏈表中指定位置節(jié)點的數(shù)據(jù)。首先通過遍歷找到要修改的節(jié)點,然后修改節(jié)點的數(shù)據(jù)。如果找不到要修改的節(jié)點,則輸出錯誤提示信息。修改完成后,再打印鏈表。最后在 main()
函數(shù)中調(diào)用相關(guān)函數(shù)進行測試,并釋放鏈表的內(nèi)存。