新员工录入员工信息表

公司将100名员工的信息以链表的形式存储起来,并以工龄将其排序,构成顺序表,先从公司其他部门转来一个员工,编写程序,将新加入的员工信息录入表中
本题实现了在顺序链表中插入节点,通过对比各节点数据域的关系确定插入点的位置,然后对应插入点位置确定数据域关键字段

#include<stdio.h>
#include<stdlib.h>
struct stuffnode
{
 int jobnumber;
 int workingyear;
 struct stuffnode *next;
}stuffarray[100];    //定义100个节点
int buildlistinfo()
{
 int i=0;
 struct stuffnode *start;
 printf("开始处理函数buildlistinfo()\n");
 start=&stuffarray[0];
 for(i=0;i<100;i++)
 {
  stuffarray[i].jobnumber=(i+1)*4+3;   //初始化链表 
  stuffarray[i].workingyear=(100-i)/10+1;
  stuffarray[i].next=&stuffarray[i+1];
 }
 stuffarray[99].next=NULL;      //最后一个节点引用值域赋值NULL 
}
int main()
{
 struct stuffnode *header=NULL;
 struct stuffnode *newstuff=NULL;
 struct stuffnode *tempnode=NULL;
 newstuff=(struct stuffnode*)malloc(sizeof(struct stuffnode));
 printf("请输入转入员工工龄:");
 scanf("%d",&newstuff->workingyear); 
 header=&stuffarray[0];
 buildlistinfo();
 tempnode=header;
 for(;NULL!=tempnode->next)
 {
  if(newstuff->workingyear==tempnode->workingyear&&newstuff->workingyear>tempnode->next->workingyear)
  {
   newstuff->next=tempnode->next;
   tempnode->next=newstuff;
   newstuff->jobnumber=tempnode->jobnumber+1;
   break;
  }
  tempnode=tempnode->next;
 }
 if(NULL==tempnode->next)    //插入到表位 
 {
  tempnode->next=newstuff;
  newstuff->next=NULL;
  newstuff->jobnumber=tempnode->jobnumber+1;
 }
 tempnode=header;
 for(;NULL!=tempnode->next)
 {
  printf("stuff's jobnumber:%d,stuff's workingyear:%d",tempnode->jobnumber,tempnode->workingyear);
  tempnode=tempnode->next;
  } 
 free(newstuff);       //释放分配空间 
} 
原创文章 291 获赞 256 访问量 2万+

猜你喜欢

转载自blog.csdn.net/huangziguang/article/details/105802564