#include <stdio.h>
#include <stdlib.h>
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList;
LinkList L;//全局变量L,可以省略函数参数传递;
LinkList insert()//头插法
{
int x;
LNode *s;
L=(LinkList ) malloc(sizeof(LNode));
L->next=NULL; //建立头节点,初始为空
printf("please input data: \n");
scanf("%d",&x);
while (x != 999)
{
s=(LinkList) malloc(sizeof(LNode));//申请一个新节点
s->next=NULL;
s->data=x;
s->next= L->next;
L->next=s;
scanf("%d",&x);
}
return L;
}
void print(LinkList list)//打印链表
{
list=list->next;//该链表有头节点,首节点为头节点的下一个
while( list ){
printf("%d ",list->data);
list=list->next;
}
}
LNode * Get_item(LinkList L)
{
// int p=0;//定义一个p保存找到的元素;
int x;
LNode *p=L->next;
printf("请输入要查找的元素值:\n");
scanf("%d",&x);
while(p && p->data != x ){
p = p->next;
}
return p;
}
int main(){
LinkList list;
LNode *p= NULL;
printf("用头插法建立单链表:\n");
L = insert();
list=L;
printf("输出链表:\n");
print(list);
printf("\n");
if(p = Get_item(L))
{
printf("在链表中查到该元素%d\n",p->data);
}else{
printf("没有该元素!");
}
return 0;
}