题目:建立一个长度为n的带头结点的单链表,在该表中寻找第i个结点,若找到,则输出“OK!”,否则输出“error!”。处理数据类型为整型。
我的代码:
#include<stdio.h>
#include<stdlib.h>
typedef struct LNode
{
int data;
struct LNode *next;
}List;
void CreatList(List *&L, int n)//建立链表
{
List *P, *S;
int k = sizeof(List);
L = (List *)malloc(k);
S = L;
for (int i = 0; i < n; i++)
{
P = (List *)malloc(k);
scanf("%d", &P->data);
P->next = S;
P = S;
}
P->next = NULL;
}
void Find(List *&L, int item)//查找函数
{
List *P;
P = L;
int k = 0;
while (P->next != NULL)
{
if (P->data == item)
{
k = 1;
break;
}
P = P->next;
}
if (k == 1)
printf("OK!");
else
printf("error!");
}
int main(void)
{
int n, item;//n为链表节点个数,item为要查找的项
List *L;
scanf("%d", &n);
CreatList(L, n);
scanf("%d", &item);
Find(L, item);
return 0;
}
经检验是Find函数中的while语句没有执行,但我想不通为什么,求大神解答。
UYOU
呼如林