《資料結構與演算法——C語言描述》答案 3.11 查詢單鏈表中的特定元素(遞迴)
阿新 • • 發佈:2019-02-04
轉載請註明出處:http://blog.csdn.net/xdz78
#include <stdio.h> #include <stdlib.h> //查詢單鏈表中的特定元素,《資料結構與演算法——c語言描述》 3.11 答案 int count;//全域性變數自動初始化為0 int m;//需要查詢的元素大小 typedef struct student { int data; struct student *next; }Node; int search(Node *p){ if(p==NULL){ return count+1; } if(p->data==m){ return count+1; } else { p=p->next; count++; search(p); } } int main() { int n;//單鏈表的元素個數 scanf("%d",&n); Node *p1,*p2,*head; int i; p1=(Node *)malloc(sizeof(Node )); p2=p1; head=p1; scanf("%d",&p1->data); for(i=0;i<n-1;i++){ p1=(Node *)malloc(sizeof(Node )); scanf("%d",&p1->data); p2->next=p1; p2=p1; } p2->next=NULL; //單鏈表建立完成 //分別用遞迴和非遞迴完成查詢工作 scanf("%d",&m);//輸入需要查詢的元素 //遞迴: count=search(head); if(count==n+1){ printf("未找到該元素!"); } else { printf("此元素在連結串列的第%d個",count); } return 0; }