鍊錶的遞迴

2021-08-19 03:20:50 字數 1293 閱讀 2429

1、輸出鍊錶資料域的所有值

void printlink1(elemsn *h)   //遞迴實現正向輸出  

}

2、逆向輸出所有值

void printlink2(elemsn *h) //遞迴實現逆向輸出

}

3、返回鍊錶所有結點的和

int sumlink(elemsn *h) //求鍊錶結點的和

4、返回鍊錶資料域值為奇數的個數

5、返回鍊錶資料域值為k的結點的個數

elemsn  *findnode(elemsn *h,int k)//返回鍊錶資料域值為k的節點的位址

以下為完整程式:

#include #include #define n 5

//結構體定義

typedef struct nodeelemsn;

//正向建立單向鍊錶

elemsn *creatlink(int a)

return h;

} //遞迴實現正向輸出

void printlink1(elemsn *h)

}//遞迴實現逆向輸出

void printlink2(elemsn *h)

}//求鍊錶結點的和

int sumlink(elemsn *h)

//求鍊錶的奇數結點的個數

int countoddnode(elemsn *h)

//返回鍊錶資料域值為k的節點的位址

elemsn *findnode(elemsn *h,int k)

//主函式

int main(void)

; int sum,cnt,key=6;

elemsn *h=null,*q;

h=creatlink(a);//建立鍊錶

printlink1(h);//正向輸出

printf("\n");

printlink2(h);//逆向輸出

sum=sumlink(h);//求鍊錶結點的和

printf("\nsum=%3d\n",sum);

cnt=countoddnode(h);//求鍊錶的奇數結點的個數

printf("count=%d\n",cnt);

q=findnode(h,key);//返回鍊錶資料域值為k的節點的位址

return 0;

}

遞迴(鍊錶反轉)

將乙個單鏈表反轉,結果得到的是鍊錶的最後乙個,以及第乙個。確實是反轉了,但是只剩下兩個元素了。public static node reversenode node node node newheadnode reversenode node.getnext node.setnext null ne...

鍊錶和遞迴

1 leetcode 203 刪除鍊錶元素 不使用虛擬頭結點 public class solution203 if head null return null 中間 listnode prev head while prev.next null else return head 使用虛擬頭結點 對...

五 鍊錶與遞迴2 遞迴陣列求和 遞迴鍊錶求和

用遞迴的方式陣列求和 遞迴公式推導 單獨拿出最左邊元素,然後和其餘的相加 sum arr 0 n 1 arr 0 sum arr 1 n 1 sum arr 1 n 1 arr 1 sum arr 2 n 1 sum arr n 1 n 1 arr n 1 sum 基本問題 sum 遞迴方法總結 從...