La sortie de la liste de liens est brouillée avec Dev

Questions et réponses du rseoc 2021-12-30 07:20:08 阅读数:839

la sortie la liste liens
Le phénomène rencontré par le problème et le contexte dans lequel il s'est produit
Codes liés au problème,Ne collez pas la capture d'écran
#include<stdio.h>#include<stdlib.h>typedef struct link_list{ int num; char sex[20]; char name[30]; struct link_list* next;}STU;void creat(STU* head)//(Créer une liste de liens){ int n; STU* p = NULL, * q = head; while (scanf("%d", &n), n >= 0) { p = (STU*)malloc(sizeof(STU)); p->num = n; scanf("%s%s", p->sex, p->name); q->next = p; q = p; } q->next = NULL;}void print(STU* head)//(Liste des liens de sortie) { while (head != NULL) { printf("%d\n%s\n%s", head->num, head->sex, head->name); head = head->next; }}STU* search(STU* head, int n)//(Trouver une liste de liens(Entrez le numéro d'étudiant)) { while (head != NULL) { if (head->num == n) { print(head); return head; } head = head->next; } return NULL;}void charu(STU* head, int n)//(Insérer une liste de liens(Entrez le numéro d'étudiant, Insérer avant le numéro de série )){ STU* x = (STU*)malloc(sizeof(STU)); scanf("%d %s %s", &x->num, x->sex, x->name); STU* b = head->next; while (b->num != n) { b = b->next; head = b; } x->next = b; head->next = x;}void deleted(STU* head, int n)//Supprimer la liste des liens(Entrez le numéro d'étudiant){ STU* p = head->next; while (p && p->num != n) { head = p, p = p->next; } if (p) { head->next = p->next; free(p); } print(head);}int main(){ STU* head = (STU*)malloc(sizeof(STU)); creat(head); printf(" Chaîne de sortie, s'il vous plaît 1\n S'il vous plaît boutonner la liste de liens insérée 2\n S'il vous plaît Cliquez pour trouver la liste de liens 3\n Veuillez cliquer pour supprimer la liste de liens 4\nEntrée-1Fin\n Puis entrez le numéro d'étudiant , Si vous n'avez qu'à sortir le numéro d'étudiant de la liste de liens, vous pouvez entrer "); int requst, n; scanf("%d%d", &requst, &n); switch (requst) { case 1:print(head); break; case 2:charu(head, n),print(head); break; case 3:search(head, n); break; case 4:deleted(head, n); break;
Résultats de l'opération et contenu du rapport d'erreur

img

 BoucheC:Users186159Documents\Untitled1.exe Bouche X1faa Chaîne de sortie, s'il vous plaît 1 S'il vous plaît boutonner la liste de liens insérée 2 S'il vous plaît Cliquez pour trouver la liste de liens 3 Supprimer le tableau 4Entrée-1Fin Entrez le numéro d'étudiant après , Si vous n'avez qu'à sortir le numéro d'étudiant de la liste de liens, vous pouvez entrer 11011098288 STRINGDefault1aaProcess exited after 24.79 seconds with return value 0 Appuyez sur n'importe quelle touche pour continuer 
Mes idées de solution et les méthodes que j'ai essayées
Le résultat que je voulais

Enlevez le désordre de l'image




Adopter les réponses:

Modifier comme suit:,Pour information:

#include<stdio.h>#include<stdlib.h>#include <cstddef>#include <windows.h>typedef struct link_list{ int num; char sex[20]; char name[30]; struct link_list* next;}STU;void creat(STU* head) //(Créer une liste de liens){ int n; STU* p = NULL, * q = head; while (1)//(scanf("%d", &n), n >= 0) { printf("Veuillez saisir le numéro d'étudiant(-1:Fin de l'entrée):\n"); scanf("%d", &n); if (n < 0) break; p = (STU*)malloc(sizeof(STU)); p->num = n; printf("Veuillez entrer le sexe Nom:\n"); scanf("%s%s", p->sex, p->name); q->next = p; q = p; } q->next = NULL;}void print(STU* head)//(Liste des liens de sortie) { head = head->next; //Modifier while (head != NULL) { printf("\n%d %s %s\n", head->num, head->sex, head->name); head = head->next; }}STU* search(STU* head, int n)//(Trouver une liste de liens(Entrez le numéro d'étudiant)) { head = head->next; //Modifier while (head != NULL) { if (head->num == n) { //print(head); printf("\n%d %s %s\n", head->num, head->sex, head->name); return head; } head = head->next; } if (!head) printf(" Le numéro d'étudiant est :%d Les dossiers de!\n", n); return NULL;}void charu(STU* head, int n)//(Insérer une liste de liens(Entrez le numéro d'étudiant, Insérer avant le numéro de série )){ STU* b = head->next; while (b && b->num != n) { head = b; //Modifier b = b->next; } if (!b) printf(" Le numéro d'étudiant à insérer n'a pas été trouvé !\n"); else{ STU* x = (STU*)malloc(sizeof(STU)); printf(" Veuillez entrer le nouveau numéro d'étudiant inséré Sexe Nom:\n"); scanf("%d %s %s", &x->num, x->sex, x->name); x->next = b; head->next = x; }}void deleted(STU* head, int n)//Supprimer la liste des liens(Entrez le numéro d'étudiant){ STU* p = head->next; while (p && p->num != n) { head = p, p = p->next; } if (p) { head->next = p->next; free(p); printf("Suppression réussie!\n"); } else printf(" L'enregistrement du numéro d'étudiant supprimé n'a pas été trouvé !\n"); //print(head);}int main(){ STU* head = (STU*)malloc(sizeof(STU)); creat(head); int requst = 1, n; while(requst){ printf(" Chaîne de sortie, s'il vous plaît 1\n S'il vous plaît boutonner la liste de liens insérée 2\n S'il vous plaît Cliquez pour trouver la liste de liens 3\n Veuillez cliquer pour supprimer la liste de liens 4\nEntrée-1Fin\n Puis entrez le numéro d'étudiant , Si vous n'avez qu'à sortir le numéro d'étudiant de la liste de liens, vous pouvez entrer "); scanf("%d%d", &requst, &n); switch (requst) { case 1:print(head); break; case 2:charu(head, n), print(head); break; case 3:search(head, n); break; case 4:deleted(head, n); break; default:requst = 0; break; } system("pause"); system("cls"); } return 0;}

版权声明:本文为[Questions et réponses du rseoc]所创,转载请带上原文链接,感谢。 https://primo.wiki/2021/12/202112271605320024.html