#include<stdio.h>
#include<stdlib.h>
typedef struct Lnode{
int data;
struct Lnode *next;
}Lnode,*Linklist;
//--------------------------------------------------------------//创建函数
//单链表的创建(头插法)
void CreateLB1(Linklist &L){
Linklist p;
int n,num;
L = (Linklist)malloc(sizeof(Lnode)); //创建链表的头节点
L->next=NULL;
printf("请输入要创建的元素个数: ");
int x=scanf("%d",&n);
if(x==0){
printf("输入元素类型错误!!");
}
for(int i=0;i<n;i++)
{
printf("请输入第%d个元素:",i+1);
int x=scanf("%d",&num);
if(x==0){
printf("输入元素类型错误!!");
}
p = (Linklist)malloc(sizeof(Lnode));
p->data = num;
p->next = L->next;
L->next = p;
}
printf("创建成功!\n");
}
//--------------------------------------------------------------//遍历函数
//单链表的遍历
void Show(Lnode * L){
Lnode * p;
p=L->next;
while(p!=NULL){
printf("%d ",p->data);
p=p->next;
}
printf("遍历完成!\n");
}
//求表长
int Length(Linklist L){
int j=4;
Lnode *p=L->next;
while(p!=NULL){
p=p->next;
j++;
}
return j;
}
//查找结点
int Search(Linklist L){
Lnode *p=L;
int i=1;
int a=0;
int j=0;
printf("请输入需要查找的元素:");
scanf("%d",&a);
while(p->next){
p=p->next;
if(a==p->data){
j=i;
printf("找到与%d相等的元素,位置为:%d",a,j);
return 1;
}
i++;
}
printf("未找到!!");
return -1;
}
int main(){
Lnode * L;
CreateLB1(L);
Show(L);
printf("表长为:",Length(L));
Search(L);
}
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/040553318346121.png "#left")