/*有两个链表a和b,设结点中包含学号、姓名。从a链表中删去与b链表中有相同学号的那些结点*/ #include <stdio.h> #include <stdlib.h> typedef struct student{
long num; char name[10]; struct student *next; }student,*Student; //创建链表 Student creat() {
Student s; int n = 0; Student p1,p2; s = p1 = p2 = (Student) malloc(sizeof(student)); printf("请输入学生学号和姓名:\n"); scanf("%ld %s",&p1->num,&p1->name); while(p1->num != 0) {
n = n + 1; if(n == 1) s = p1; else p2->next = p1; p2 = p1; p1 = (Student) malloc(sizeof(student)); scanf("%ld %s",&p1->num,&p1->name); } p2->next = NULL; return s; } //输出链表 void print(Student s) {
Student p; printf("\nNow,The records are:\n"); p = s->next; if(s != NULL) {
do {
printf("%ld %s\n",p->num,p->name); p = p->next; }while(p != NULL); } } void delect(Student a,Student b) {
Student p1,p2,q1,q2; int flag = 0; p1 = a; q1 = b->next; while(q1) {
p1 = a; while(p1->next != NULL) {
flag = 0; p2 = p1->next; if(p2->num == q1->num) {
p1->next = p2->next; flag = 1; } if(flag == 0) p1 = p1->next; } q1 = q1->next; } } int main() {
Student a; Student b; a = (Student)malloc(sizeof(student)); b = (Student)malloc(sizeof(student)); a->next = creat(); b->next = creat(); print(a); print(b); delect(a,b); print(a); }
讯享网

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/64933.html