遞迴實現連結串列的逆序輸出
阿新 • • 發佈:2019-08-31
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 50
//定義連結串列節點結構、
typedef struct Node{
char data;
struct Node* next;
}LinkNode, *LinkNodePtr;
//將字元初始為連結串列
LinkNodePtr Init(LinkNodePtr head, char *str){
int i=0;
//申請頭指標記憶體
LinkNodePtr pre;
head = (LinkNodePtr)malloc(sizeof(LinkNode));
if(head == NULL){
exit(0);
}
head->data = str[i];
i++;
head->next = NULL;
pre= head;
while(str[i] != '\0'){
struct Node* temp = (LinkNodePtr)malloc(sizeof(LinkNode));
temp->data = str[i];
temp->next = NULL;
pre ->next = temp;
pre = temp;
i++;
}
return head;
}
//逆序輸出連結串列
//使用遞迴輸出
void backward(LinkNodePtr head){
if(!head){
exit(0);
}
if(head->next ==NULL){
printf("%c ",head->data);
}else{
backward(head->next);
printf("%c ",head->data);
}
}
int main(){
char str[MAXSIZE];
LinkNodePtr head= NULL;
printf("請輸入字串:");
scanf("%s",str);
//初始化連結串列
head = Init(head,str);
//逆序輸出連結串列
backward(head);
return 0;
}