程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 單向列表倒置

單向列表倒置

編輯:C++入門知識

單向列表倒置:

算法示例:

head  end   tmp
 1---->2---->3---->4---->5

end   head     tmp
 2---->1        3---->4---->5

head       end   tmp
 2---->1    3---->4---->5

end  head        tmp
 3---->2---->1    4---->5

head             end   tmp
 3---->2---->1    4---->5

end  head              tmp
 4---->3---->2---->1    5

head                   end   tmp
 4---->3---->2---->1    5    NULL

end  head
 5---->4---->3---->2---->1

示例代碼:

[cpp]
#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_inversion\n"); 
    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("%d\n", 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
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved