没明白,难道就这样一直不懂装懂下去?还以为自己可能了似的,对比过去几年,学的是一年不如一年,哈哈哈
程序代码:
#include<stdio.h> #include<stdlib.h> #define len sizeof(struct student) struct student { long num; float score; struct student *next; }; int n; struct student *creat(void) { struct student *head; struct student *p1, *p2; n = 0; p1 = p2 = (struct student *)malloc(len); scanf_s("%ld%f", &p1->num, &p1->score); head = NULL; while (p1->num != 0) { n = n + 1; if (n == 1) head = p1; else p2->next = p1; p2 = p1; p1 = (struct student *)malloc(len); scanf_s("%ld%f", &p1->num, &p1->score); } p2->next = NULL; return head; } struct student *del(struct student *head, long num) { struct student *p1, *p2; if (head == NULL) { printf("\nlist null!\n"); return head; } p1 = head; while (num != p1->num&&p1->next != NULL) { p2 = p1; p1 = p1->next; } if (num == p1->num) { if (p1 == head) head = p1->next; else p2->next = p1->next; printf("delete %ld\n", num); n = n - 1; } else printf("%ld not been found\n", num); return head; } void print(struct student *head) { struct student *p; printf("\nNow,these %d records are:\n", n); p = head; if(head!=NULL) do { printf("%ld %5.1f\n", p->num, p->score); p = p->next; } while (p != NULL); } int main() { struct student *creat(void); struct student *del(struct student *head, long num); void print(struct student *head); struct student *head; long del_num; printf("input records\n"); head = creat(); print(head); printf("input deleted number:\n"); scanf_s("%ld", &del_num); head = del(head, del_num); print(head); return 0; }