已知head指向一个带头结点的单向链表,链表中每个结点包含字符型数据域(data)和指针域(next)。请编写函数实现在值为a的结点前插入值为key的结点,若没有值为a的结点,则插在链表最后。
遍历链表,用头节点的next。找到值为a的节点,在前面插入新节点即可
#include <stdio.h>
typedef struct _linknode
{
int data;
struct _linknode *next;
}linknode,*linklist;
void creat(linklist L)
{
int i=0;
linklist p = L,q=NULL;
for(i=0;i<5;i++)
{
q = (linklist)malloc(sizeof(linknode));
scanf("%d",&q->data);
q->next = NULL;
p->next = q;
p = q;
}
}
void insert(linklist L,int a,int m)
{
linklist p = L,q,t;
q = (linklist)malloc(sizeof(linknode));
while(p->next != NULL)
{
if(p->next->data == a)
{
break;
}
p = p->next;
}
t = p->next;
p->next = q;
q->next = t;
}
int main()
{
//已知head指向一个带头结点的单向链表,链表中每个结点包含字符型数据域(data)和指针域(next)。请编写函数实现在值为a的结点前插入值为key的结点,若没有值为a的结点,则插在链表最后。
linknode head;
int a,m;
head.next = NULL;
creat(&head);
scanf("%d%d",&a,&m);
insert(&head,a,m);
return 0;
}