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 遞迴方法總結 從...