struct Node* reverseList(struct Node *head) {
struct Node *p = head;
// 反轉(zhuǎn)后的鏈表頭部
struct Node *newListHead = NULL;
// 遍歷鏈表
while (p != NULL) {
// 記錄下一個(gè)結(jié)點(diǎn)
struct Node *temp = p->next;
// 使用頭插法
// 當(dāng)前結(jié)點(diǎn)的next指向新鏈表的頭部
p->next = newListHead;
// 更新鏈表頭部為當(dāng)前結(jié)點(diǎn)
newListHead = p;
// 移動(dòng)P
p = temp;
}
return newListHead;
}
struct Node* constructList(void) {
// 頭結(jié)點(diǎn)
struct Node *head = NULL;
// 尾結(jié)點(diǎn)
struct Node *tail = NULL;
for (int i = 0; i < 5; i++) {
struct Node *node = (struct Node *)malloc(sizeof(struct Node));
node->data = I;
if (head == NULL) {
head = node;
} else {
tail->next = node;
}
tail = node;
}
tail->next = NULL;
return head;
}
void printList(struct Node *head) {
struct Node *temp = head;
while (temp != NULL) {
printf("node is %d\n", temp->data);
temp = temp->next;
}
}
屏幕快照 2018-09-12 下午9.52.29.png