单链表上查找算法的实现

单链表上查找算法的实现

1000(ms)

65535(kb)

2948 / 7916

建立一个长度为n的带头结点的单链表,在该表中寻找第i个结点,若找到,则输出ok,否则输出error。处理数据类型为整型。

输入

第一行为链表的长度n; 
第二行为链表中的数据元素;
第三行为要找的结点i。

输出

找到就输出ok,没找到就输出error。

样例输入

10
1 2 3 4 5 6 7 8 9 10
5

样例输出

ok
#include <iostream>
#include <stdio.h>
#include <malloc.h>
typedef struct LNode{
    int data;
    struct LNode* next;
}LinkList;

void initList(LinkList*& L){
    L = (LinkList* )malloc(sizeof(LinkList));
    L->data = 0;
    L->next = NULL;
}
void insertList(LinkList*& head,int newData){
    LinkList* newNode;
    initList(newNode);
    newNode->data = newData;
    LinkList* node = head;
    while(node->next != NULL){
        node = node->next;
    }
    node->next = newNode;
}
bool findList(LinkList* head,int index){
    if(head->next == NULL) return false;
    if(index <= 0) return false;
    int i = 1;
    LinkList* node = head;
    while(node->next != NULL && i < index){
        node = node->next;
        i++;
    }
    if(node->next == NULL) return false;
    if(i == index) return true;
    return true;
}
int main(){
    LinkList* head;
    initList(head);
    int n;
    scanf("%d",&n);
    while(n--){
        int x;
        scanf("%d",&x);
        insertList(head,x);
    }
    int index;
    scanf("%d",&index);
    bool isFind = findList(head,index);
    if(isFind == true){
        printf("ok");
    }else{
        printf("error");
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_30092289/article/details/88412172