1. 程式人生 > >算法習題---線性表之單鏈表逆序打印

算法習題---線性表之單鏈表逆序打印

思路 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

typedef 
int 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; }

技術分享圖片

算法習題---線性表之單鏈表逆序打印