, поэтому я пытаюсь ввести информацию об ученике, включая имя, фамилию, счет и почтовый индекс, в один узел. После этого я смогу вставить информацию о другом ученике в следующий узел и т. Д. И получить к ним доступ.
Часть, с которой у меня возникают проблемы - это добавление фамилии, счета и почтового индекса в узел. Если кто-то может помочь, я был бы очень признателен. Возможно, это что-то действительно простое, но я просто не знаю как.
Вы можете увидеть, как проблема возникает в функции вставки. Я могу вставить имя, но не фамилию. Что-то может быть не так с моими основами, но если это так, просто дайте мне знать.
Спасибо.
#include <stdio.h>
#include <stdlib.h>
/* inserting nodes at the END of a linked list */
void Insert(char *f, char *l, float s, char *z);
void Print();
struct node
{
struct Student *now;
struct node *next;
};
struct node *head; /* it will be created in the GLOBAL region of the memory */
struct node *tail = NULL;
struct Student {
char firstname[20];
char lastname[20];
float score;
char zip[20];
};
int main()
{
//int i,n,x;
//int x;
head = NULL;
char first[20];
char last[20];
float score;
char zip[20];
printf("\nPlease input records of students: ");
printf("\nFirst name: ");
scanf("%s", first);
printf("\nLast name: ");
scanf("%s", last);
printf("\nScore: ");
scanf("%f", &score);
printf("\nZip code: ");
scanf("%s", zip);
printf("\n------ This is the Print records function so far: \n\n");
Insert(first, last, score, zip);
Print();
return 0;
}
void Insert(char *f, char *l, float s, char *z)
{
struct node *temp = (struct node*) malloc(sizeof(struct node));
temp->now=f;
// Problem: how do I insert the other variables (last, score, zip) into a student structure and into node?
//temp->now.lastname =l; //Doesn't work
temp->next=NULL;
if (head == NULL)
{
head=temp;
tail=temp;
return;
}
tail->next=temp;
tail=temp;
}
void Delete(int n)
{
struct node* temp1 = head;
int i;
if (n==1)
{
head = temp1->next; /*head now points to the second node */
free(temp1);
return;
}
for(i=0; i<n-2; i++)
temp1=temp1->next; /* temp1 points to (n-1)th node */
struct node* temp2 = temp1->next; /* nth node */
temp1->next = temp2->next; /*(n+1)th node */
free(temp2); /* delete temp2 */
}
void Print()
{
struct node* temp = (struct node*) malloc(sizeof(struct node));
temp = head;
while (temp!=NULL)
{
printf("%s ",temp->now);
temp = temp->next;
}
printf("\n");
}