//声明结构体链表 typedef struct student{ int num; int score; struct student *next; }STU,*LINK;//定义 //创建结构体链表函数 LINK createLink(int n){//n为传入的结点数 int i; int num,score; LINK head,tail,p;//定义 头 尾 利用尾插法创建列表 head=tail=(LINK)malloc(sizeof(STU));//为head分配空间 tail->next=NULL; for(i=0;i<n;i++){ p=(LINK)malloc(sizeof(STU)); scanf("%d",&num); scanf("%d",&score); p->num=num; p->score=score; p->next=NULL;//创建新结点 tail->next=p; tail=p; } return head; } //判断删除结点函数 void process(LINK head1,LINK head2,int n){ LINK pr=head1; int count=0;//记录删除的结点数 LINK p=head1->next; int flag;//定义标志变量 while(p!=NULL){ flag=0;//标志变量为0时 表示没有相同学号 LINK q=head2->next;//每次q需从头开始遍历链表 while(q!=NULL){ if(p->num==q->num){ pr->next=p->next;//相同时 将前指针pr->next指向p的 free(p);//x消除后释放 不用再变pr即不需要pr=pr->next; p=pr->next;//向后移动p flag=1; count++;//计数 break; } q=q->next;//移动q } if(flag==0){//当无元素相同时 pr p分别向下移动 pr=pr->next; p=p->next; } } printf("%d\n",n-count);//计算出剩余的结点 LINK head=head1->next; while(head!=NULL){//打印输出 printf("%d %d\n",head->num,head->score); head=head->next; } } int main(){ int n,m; scanf("%d%d",&n,&m); LINK head1,head2; head1=createLink(n); head2=createLink(m); process(head1,head2,n); return 0; }
0.0分
1 人评分
2006年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:913 |
用筛法求之N内的素数。 (C语言代码)浏览:685 |
Minesweeper (C语言描述,蓝桥杯)浏览:1177 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:524 |
有关字符,字符串的输入输出函数说明浏览:498 |
蛇行矩阵 (C语言代码)浏览:560 |
模拟计算器 (C语言代码)浏览:2366 |
最好的,浏览:601 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:820 |
A+B for Input-Output Practice (I) (C语言代码)浏览:451 |