#include #include
typedef struct LNode
{
int data ;
struct LNode *next;
} LNode,*LinkList;
LinkList L;//定义全局变量L,可省略参数传递
LinkList insert()//尾插法建立单链表;
{
int x;
LNode *s;//定义一个尾指针s
LNode *p;
L=(LinkList )malloc((sizeof(LNode)));
L->next=NULL;
s=L;
printf("PLEASE INPUT THE DATA :\n");
scanf("%d ",&x);
while(x != 999){
p=(LinkList )malloc( sizeof(LNode));
p->data=x;
s->next=p;
s=p; //s指向新的尾节点
scanf("%d",&x);
}
s->next=NULL;//WE尾指针置为空;
return L;
}
LinkList head_insert()
{
LNode *s;
int x;
L=(LinkList )malloc((sizeof(LNode)));
L->next=NULL;
printf("请输入数据: \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 p;
p=L->next;
printf("打印输出链表: \n");
while(p)
{
printf("%d\t",p->data);
p=p->next;
}
}
LNode *get_nmber_address(LinkList L, int i)
{
LNode *p;
p=L->next;
int j = 1;//j从一开始;
if(i == 0 ){
return L;//若io,则返回头节点;
}
if(i<0){
return NULL;//若 i 不合法,则返回空;
}
while( p && j < i ){
p=p->next;
j++; // j 计数第几个节点
}
return p; // 返回第 i 个节点的指针;
}
int main()
{
int i;
LNode *p;
printf("Hello world!\n");
// insert();
head_insert();
print();
printf("\n");
printf("请输入要查找的元素序号 i : \n");
scanf("%d",&i);
p=get_nmber_address(L,i);
if(p){
printf("找到第 %d 个元素 %d \n",i,p->data);
}else{
printf("没有找到第 %d 个元素! \n",i);
}
return 0;
}