单向列表倒置
|
单向列表倒置:
算法示例:
head end tmp end head tmp head end tmp end head tmp head end tmp end head tmp head end tmp end head 示例代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct LIST_NODE {
struct LIST_NODE* next;
int value;
}LIST_NODE;
LIST_NODE* list_inversion(LIST_NODE *head) {
printf("in list_inversionn");
LIST_NODE *tmp,*end;
end = head->next;
tmp = end->next;
head->next = NULL;
while (NULL != tmp) {
end->next = head;
head = end;
end = tmp;
tmp = tmp->next;
}
end->next = head;
return end;
}
int main() {
LIST_NODE *head,*end;
head = (LIST_NODE*)malloc(sizeof(LIST_NODE)*1);
end = (LIST_NODE*)malloc(sizeof(LIST_NODE)*1);
LIST_NODE* tmp = (LIST_NODE*)malloc(sizeof(LIST_NODE)*1);
int len = 0,value = 0;
printf("Input length of list :n");
scanf("%d",&len);
tmp = head;
for(int i= 0; i < len; i++) {
LIST_NODE* tmp2 = (LIST_NODE*)malloc(sizeof(LIST_NODE)*1);
printf("Input the current value : ");
tmp->next = tmp2;
if (i == len-1) {
tmp->next = NULL;
}
scanf("%d",&value);
tmp->value = value;
tmp = tmp->next;
}
LIST_NODE *aList = list_inversion(head);
printf("new list : n");
while (NULL != aList) {
printf("%dn",aList->value);
aList= aList->next;
}
}
示例运行结果: [root@localhost List]# ./listtest Input length of list : 5 Input the current value : 1 Input the current value : 2 Input the current value : 3 Input the current value : 4 Input the current value : 5 in list_inversion new list : 5 4 3 2 1 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
