解题思路:
创建两个链表,首先是每个内部没有重复的值,但是在不同的链表之间有重复的值,因此只要判定有一个相同,就可以判断第一个链表的下一个节点 对应有n个节点的那个);在进行判断时要注意,使用while循环
注意事项:
1:如下的代码中 2:不要将m和n的位置弄乱了
参考代码:
/*为了方便头指针的使用,在下面的代码中先申请head的空间,然后就对head对应的值进行赋初值*/ #include <stdlib.h> #include <stdio.h> #include <malloc.h> typedef struct stu { int serial_number; int score; struct stu* next; }*stu0, stu1; int main() { int n, m, i = 0, j = 1; //j的作用:用来判断是否在一次外循环中找到了要删除的对象,在这里将j赋初值为1是 //因为在下面的代码中,当进行了删除后将会把p推进1(p和q均是结构体指针,在本题中我 //以p为先,q为后),因而就不执行下面的p=向前推进1了 //n表示的是第一个链表的节点个数,m表示的是第二个的 scanf("%d%d", &n, &m); stu0 head0 = (stu0)malloc(sizeof(stu1)), head1 = (stu0)malloc(sizeof(stu1)), p = NULL, q = NULL, pq = NULL; //习惯上以前为先即p if (head0 == NULL || head1 == NULL) //判断是否有足够的空间,没有则退出 { printf("There is not enough memery"); exit(-1); //位于标准库中 } scanf("%d%d", &head0->serial_number, &head0->score); //数据的读入 head0->next = head1->next = NULL; p = head0; while (i < n - 1) { q = (stu0)malloc(sizeof(stu1)); q->next = NULL; scanf("%d%d", &q->serial_number, &q->score); p->next = q; p = q; i++; } scanf("%d%d", &head1->serial_number, &head1->score); //在这里%d之间可以加空格 p = head1; i = 0; while (i < m - 1) { q = (stu0)malloc(sizeof(stu1)); q->next = NULL; scanf("%d%d", &q->serial_number, &q->score); p->next = q; p = q; i++; } p = head0; q = head1; while(p) //外层循环,对head0 进行遍历 { q = head1; j = 1; if (p == NULL) { break; } while(q) //内层循环,对q进行遍历 { if (p->serial_number == q->serial_number) { j = 0; if (p == head0) { head0 = p->next; free(p); p = head0; break; } else if (p->next == NULL) { free(p); pq->next = NULL; p = NULL; break; } else { pq->next = p->next; free(p); p = pq->next; break; } } else { q = q->next; } } if (j == 1) { pq = p; p = p->next; } } for (p = head0, i = 0; p; i++, p = p->next); //用i来计数看看留下了多少个节点 //也可以将i和j的使用合并,就可以少申请一个空间 printf("%d\n", i); for (p = head0; p; p = p->next) { printf("%d %d\n", p->serial_number, p->score); //在这里,用for循环语句就可以和方便地输出所有的节点 } }
0.0分
5 人评分
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C语言代码) 如果a<0,那就不是这个代码了,哈哈哈哈浏览:1306 |
K-进制数 (C++代码)浏览:938 |
程序员的表白 (C语言代码)浏览:1575 |
简单的a+b (C语言代码)浏览:752 |
数对 (C语言代码)浏览:762 |
C语言程序设计教程(第三版)课后习题10.3 (C语言代码)浏览:1968 |
2^k进制数 (C语言描述,蓝桥杯)浏览:1457 |
钟神赛车 (C语言代码)浏览:665 |
矩形面积交 (C语言代码)浏览:1433 |
链表数据求和操作 (C语言代码)浏览:1035 |