算法習題---線性表之單鏈表逆序打印
阿新 • • 發佈:2018-08-31
思路 sta ini info 若是 簡單 數組 for ()
一:題目
逆序打印單鏈表中的數據,假設指針指向單鏈表的開始結點
二:思路
1.可以使用遞歸方法,來進行數據打印
2.可以借助數組空間,獲取長度,逆序打印數組
3.若是可以,對鏈表數據使用頭插法,逆序排列,然後正序打印即可
三:算法實現(這裏使用方法一:遞歸實現簡單易懂)
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #define MAXSIZE 10 #define OK 1 #define ERROR 0 typedefint Status; typedef struct Node { int data; struct Node* next; }LNode,*LinkList; //初始化鏈表,帶有頭結點 Status InitList(LinkList* L) { LNode* p,*q; //初始化頭結點 *L = (LinkList)malloc(sizeof(LNode)); if (*L == NULL) return ERROR; (*L)->next = NULL; p = *L;//頭插法插入數據1-10,也就是說創建後的鏈表數據是由10-1的 for (int i = 0; i < MAXSIZE; i++) { q = (LNode*)malloc(sizeof(LNode)); q->data = i + 1; q->next = p->next; p->next = q; } return OK; } void InvertPrint(LinkList L) { if (L!=NULL) { InvertPrint(L->next); printf("%d->", L->data); } }int main() { LinkList L; //初始化鏈表數據 InitList(&L); //打印數據 InvertPrint(L->next); system("pause"); return 0; }
算法習題---線性表之單鏈表逆序打印