#include<stdio.h>
#include<stdlib.h>
struct test
{
int data;
struct test *next;
};
void printLink(struct test* head)
{
struct test *point=head;
while(point!=NULL)
{
printf("%d ",point->data);
point=point->next;
}
putchar('\n');
}
struct test* inserfromfor(struct test *head,int data,struct test *ne)
{
struct test *p=head;
if(p->data==data)//若在第一个元素之前插
{
ne->next=head;
return ne;
}
while(p->next!=NULL)
{
if(p->next->data==data)//中间元素前插
{
ne->next=p->next;
p->next=ne;
return head;
}
p=p->next;
}
}
int searchLink(struct test* head,int data)
{
struct test* point=head;
while(point!=NULL)
{
if(point->data==data)
{
return 1;
}
point= point->next;
}
return 0;
}
int getJieDian(struct test *head)//寻找节点数
{
int cnt=0;
while(head!=NULL)
{
cnt++;
head=head->next;
}
return cnt;
}
int main()
{
struct test t1={
1,NULL};
struct test t2={
2,NULL};
struct test t3={
3,NULL};
struct test t4={
4,NULL};
struct test t5={
5,NULL};
t1.next=&t2;
t2.next=&t3;
t3.next=&t4;
t4.next=&t5;
int c,d;
struct test *head=NULL;
printf("Please tell me which num before you want to insert:\n");
scanf("%d",&c);
if(c>5||c<1)
{
printf("WRONG!\n");
exit(-1);
}
printf("Please tell me which num you want to insert:\n");
scanf("%d",&d);
struct test t6={
d,NULL};
head=&t1;
head=inserfromfor(head,c,&t6);
printLink(head);
int ret=getJieDian(&t1);
printf("total=%d\n",ret);
int a=searchLink(&t1,6);
if(a==1)
{
printf("WORD HERE!");
}
else
{
printf("WORD NO HERE!");
}
return 0;
}
链表从元素前插入
猜你喜欢
转载自blog.csdn.net/qq_43482790/article/details/114896168
今日推荐
周排行