单链表上查找算法的实现
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;
}