用c语言实现 链表从指定节点前方插入新节点
#include<stdio.h>
struct Test
{
int data;
struct Test *next;
};
void printLine(struct Test *head)
{
struct Test *point;
point = head;
while(point != NULL)
{
printf("%d ",point->data);
point = point->next;
}
putchar('\n');
}
int printnum(struct Test *head)
{
int sum;
while(head != NULL)
{
head = head -> next;
sum ++;
}
return sum;
}
int searchnum(struct Test *head,int data)
{
while(head != NULL){
if(head->data == data)
{
return 1;
}
head = head -> next;
}
return 0;
}
int insert(struct Test *head,int data,struct Test *new)
{
struct Test *point = head;
while(point != NULL){
if(point->data == data)
{
new->next = point->next;
point->next = new;
}
point = point->next;
}
return 0;
}
struct Test* qiancha(struct Test *head,int data,struct Test *new)
{
struct Test *point = head;
if(point->data == data){
new->next = point;
return new;
}
while(point->next !=NULL)
{
if(point->next->data == data)
{
new->next=point->next;
point->next=new;
printf("qianinsert:ok!\n");
return head;
}
point = point->next;
}
printf("qiancha:no!\n");
return head;
}
int main()
{
int arry[]={1,2,3};
int i;
for(i=0;i<sizeof(arry)/sizeof(arry[0]);i++)
{
printf("%d ",arry[i]);
}
putchar('\n');
struct Test t1={1,NULL};
struct Test t2={2,NULL};
struct Test t3={3,NULL};
struct Test t4={4,NULL};
struct Test new={100,NULL};
struct Test new1={101,NULL};
struct Test new2={102,NULL};
struct Test *head=&t1;
t1.next = &t2;
t2.next = &t3;
t3.next = &t4;
printLine(&t1);
insert(head,1,&new);
printLine(head);
head = qiancha(head,1,&new1);
printLine(head);
head = qiancha(head,3,&new2);
printLine(head);
}
运行结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/158da33bf6d84669b2a702166568335f.png#pic_center)