#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct labor
{
char number[10]
int salary
struct labor *next
}
struct labor *creat()
{
struct labor *head,*tail,*p
int salary
char number[10]
head=tail=NULL
printf("Please enter the number:")
scanf("%s",number)
printf("Please enter the salary:")
scanf("%d",&salary)
while(salary)
{
p=(struct labor*)malloc(sizeof(struct labor))
strcpy(p->number,number)
p->salary=salary
p->next=NULL
if(head==0)
head=p
else
tail->next=p
tail=p
printf("Please enter the number:")
scanf("%s",number)
printf("Please enter the salary:")
scanf("%d",&salary)
}
return head
}
void list(struct labor *head)
{
struct labor *ptr
if(head==NULL)
{ printf("No list found")return}
for(ptr=headptr!=NULLptr=ptr->next)
{
printf("the number:%s\n",ptr->number)
printf("the salary:%d\n\n",ptr->salary)
}
}
struct labor *insert(struct labor *head)
{
//其实,为了维持和前边数据的一致,这里应该也判断一下薪水是否为0,如果为0则不执行插入 *** 作
struct labor *s,*pp
char number[10]
int salary
s=(struct labor*)malloc(sizeof(struct labor))
printf("Please enter the information:\n")
printf("Please enter the number:")
scanf("%s",number)
printf("Please enter the salary:")
scanf("%d",&salary)//这里少了&,按题意只有这一处错误,下面的是我的建议
strcpy(s->number,number)
s->salary=salary
s->next=NULL
pp=head
while(strcmp(pp->number,"0605")!=0&&pp->next!=NULL)//也不算什么大错误,如果你原来输入的结点中不包含number等于"0605"的结点的话将出现问题,这样修改,如果找不到对应结点,则把新的数据插到链表的尾部
{pp=pp->next}
s->next=pp->next
pp->next=s
return head
}
void main()
{
struct labor *head
head=creat()
list(head)
insert(head)
list(head)
}
如果已知一个节点指针pre和一个节点指针cur,要把cur插入到pre节点之后,很显然要保证链表不会断开而丢失后面的节点,要先把后面的节点指针(指向lat的指针)保存下来,即有cur->next = pre->next,然后把cur连接的一串链表连接到pre后面,即pre->next = cur上面介绍了,在一个节点之后插入节点的情况。这是通常的情况。如果要向一个链表的头部插入节点,就只需要将新节点的下一个指针指向链表的头指针即可。
在这种情况下,有两点要注意:
1,链表是否为空链表
2,要插入的节点是不是空指针。
代码实现:
//向单链表中插入一个节点(插入在链开始处)
//输入参数:单链表的头指针和要插入的节点指针
//输出参数:无
//返回值:指向单链表的头指针
SingleList* Insert(SingleList *head,SingleList *node)
{
if(node == NULL)
{
return head
}
else if(head == NULL)
{
return node
}
node->next = head
head = node
return head
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)