遞迴演算法-不帶頭節點的單連結串列
問題及程式碼:
/*
* Copyright (c) 2016, 煙臺大學計算機與控制工程學院
* All rights reserved.
* 檔名稱:LinkList.cpp
* 作 者:單昕昕
* 完成日期:2016年4月14日
* 版 本 號:v1.0
* 問題描述:有一個不帶頭節點的單連結串列,設計遞迴演算法:
(1)求以h為頭指標的單連結串列的節點個數
(2)反向顯示以h為頭指標的單連結串列的所有節點值
* 程式輸入:陣列A[n]。
* 程式輸出:n個元素的平均值。
*/
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <time.h>
#include <stdlib.h>
using namespace std;
//不帶頭節點的單連結串列的節點型別
typedef struct Node
{
int data;
struct Node *next;
} LinkList;
LinkList *h;
void Create(LinkList *&h,int a[],int n)
{
//建立一個不帶頭節點的單連結串列
int i;
LinkList *s,*r;
h=(LinkList *)malloc(sizeof(LinkList));
h->data=a[0];
h->next=NULL;
r=h;
for(i=1; i<n; ++i)
{
s=(LinkList *)malloc(sizeof(LinkList));
s->data=a[i];
r->next=s;
r=s;
}
r->next=NULL;
}
//求以h為頭指標的單連結串列的節點個數
int Number(LinkList *h)
{
if(h==NULL)
return 0;
else
return 1+Number(h->next);
}
//反向顯示以h為頭指標的單連結串列的所有節點值
void Display(LinkList *h)
{
if(h==NULL)
return ;
else
{
Display(h->next);
cout<<h->data<<" ";
//如果是正向顯示的話,cout寫在Display遞迴上面
}
}
int main()
{
int a[10]= {0,1,2,3,4,5,6,7,8,9};//作為預設單連結串列中的data值
Create(h,a,10);//尾插法將a陣列中的值插入連結串列
cout<<"以h為頭指標的單連結串列的節點個數=";
cout<<Number(h)<<endl;
cout<<"反向顯示以h為頭指標的單連結串列的所有節點值"<<endl;
Display(h);
return 0;
}
執行結果:
相關文章
- 圖解帶頭節點的單連結串列的反轉操作圖解
- 單連結串列逆置遞迴演算法遞迴演算法
- 帶頭結點的單連結串列實現(C++)C++
- 帶頭結點的連結串列操作題
- C++單連結串列遞迴遍歷操作C++遞迴
- 定義一個函式,輸入一個連結串列的頭節點,反轉該連結串列並輸出反轉後連結串列的頭節點函式
- 複習下C 連結串列操作(雙向迴圈連結串列,查詢迴圈節點)
- 連結串列面試題(十一)---求帶環單連結串列 環的入口點面試題
- [演算法]向有序的環形單連結串列中插入新節點演算法
- 單向迴圈連結串列
- 連結串列面試題(一)---刪除一個無頭單連結串列的非尾結點面試題
- Leetcode刷題之連結串列增加頭結點的字首節點LeetCode
- 連結串列-迴圈連結串列
- Golang從合併連結串列聊遞迴Golang遞迴
- Java演算法面試題(001) 如何使用迴圈和遞迴計算單連結串列的長度Java演算法面試題遞迴
- 利用遞迴方法實現連結串列反轉、前N個節點反轉以及中間部分節點反轉遞迴
- c 連結串列之 快慢指標 查詢迴圈節點指標
- 資料結構與演算法——歸併排序: 陣列&連結串列&遞迴&非遞迴解法全家桶資料結構演算法排序陣列遞迴
- 連結串列面試題(四)---查詢連結串列的中間節點面試題
- 單向迴圈連結串列——查詢、刪除、插入結點
- 單鏈迴圈連結串列(初版
- 【資料結構】遞迴實現連結串列逆序資料結構遞迴
- 連結串列4: 迴圈連結串列
- 連結串列反轉非遞迴演算法!看不懂打死我!遞迴演算法
- LeetCode19題 刪除連結串列的倒數第N個節點 (c++ 遞迴)LeetCodeC++遞迴
- 反轉連結串列系列題練習遞迴遞迴
- Redis筆記 — 連結串列和連結串列節點的API函式(三)Redis筆記API函式
- 單向迴圈連結串列的介面程式
- 單向迴圈連結串列的實現
- 【資料結構與演算法學習】線性表(順序表、單連結串列、雙向連結串列、迴圈連結串列)資料結構演算法
- 利用遞迴實現連結串列的排序(歸併排序)遞迴排序
- 單向迴圈連結串列大綱
- 連結串列面試題(十)---求帶環單連結串列的環的長度面試題
- K個節點翻轉連結串列
- 雙向連結串列 尾節點插入
- 連結串列面試題(十三)---求兩個都不帶環的連結串列相交的結點面試題
- 設計單向迴圈連結串列的介面
- 結點插入到單連結串列中