Я пытаюсь создать связанный список, в котором хранятся имя и возраст учащегося.У меня проблемы со вставкой.
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <stdlib.h>
typedef struct node{
char Name[50];
int studentAge;
struct node* next;
}MyNode;
именно так я определил мою структуру, которая содержит требуемые данные и указатель «следующий», который указывает на следующий узел.
Ниже приведена моя функция вставки, поэтому в первом случае, еслиЯ говорю, что если заголовка нет, то есть head = NULL, тогда создайте пространство памяти для головы, используя malloc. После этого я копирую все данные в головной узел и проверяю, что следующий заголовок указывает на ноль.
Во втором состоянии я говорю, есть ли голова, то есть голова!= NULL, затем просмотрите список до конца, используя текущий указатель, а затем скопируйте все данные.
void InsertStudent(char givenName[50], int age, MyNode* head){
if(head == NULL){
head = (MyNode*) malloc(sizeof(MyNode));
strcpy(head->Name,givenName);
head->studentAge = age;
head->next = NULL;
}
if(head != NULL){
MyNode* current = head;
while(current->next != NULL){
current = current->next;
}
current->next = (MyNode*) malloc(sizeof(MyNode));
strcpy(current->next->Name,givenName);
current->next->studentAge = age;
current->next->next = NULL;
}
}
Теперь я не уверен, есть ли проблема в моей печати или вставке, потому что это нераспечатывать мои узлы, когда я пробую код
void PrintList(MyNode* head){
MyNode* current = head;
while(current != NULL){
printf("Name is %s Age is %d\n",current->Name,current->studentAge);
current = current->next;
}
}
это моя основная функция .. есть ли проблема с MyNode * head = NULL;строка кода это разрешено?
int main()
{
MyNode* head = NULL;
int r = 0;
while(r!=1)
{
printf("Data Structures - Linked List\n");
printf("Choose one Option:\n\n");
printf("1.Insert Student\n");
printf("2.Remove Student\n");
printf("3.Print all student\n");
printf("4.Exit\n");
int option=0;
char givenName[50];
int givenAge;
scanf("%d",&option);
switch(option){
case 1:
printf("Enter name of student: ");
scanf("%s",givenName);
printf("\nEnter Age of student: ");
scanf("%d",&givenAge);
InsertStudent(givenName,givenAge,head);
break;
case 2:
printf("Enter name of student: ");
scanf("%s",givenName);
printf("\nEnter Age of student: ");
scanf("%d",&givenAge);
RemoveStudent(givenName,givenAge);
break;
case 3:
PrintList(head);
break;
case 4:
r=1;
break;
default:
r=1;
printf("\nNot an option\n");
break;
}
}
}