《数据结构与算法——C语言描述》答案 3.11 查找单链表中的特定元素(递归)

转载请注明出处: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;
}

    原文作者:查找算法
    原文地址: https://blog.csdn.net/xdz78/article/details/46000485
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞