добавление и печать связанных списков - PullRequest
0 голосов
/ 27 апреля 2020
  • реализовать структуру (Person) в виде списка;
  • Создать функцию, которая добавляет новые члены в список;
  • Создать функцию, которая распечатывает все элементы list.

на самом деле я не знаю, в чем проблема в моем коде сейчас

Мой код sofar

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct Person
{
    char name[50];
    int yearBorn;
    struct Person *next;
};

struct Person* push(int yearBorn, char *name, struct Person* previous)
{
    struct Person *pn = malloc(sizeof(struct Person));
    pn->next = NULL;
    pn->yearBorn = yearBorn;
    strcpy(pn->name, name);
    previous = pn;
    return pn;
}

int main()
{

    struct Person *head = NULL;
    struct Person *current = head;
    int n;
    printf("please enter the number of persons you wanna add: ");
    scanf("%d\n", &n);
    for(int i = 0; i < n ; i++ )
    {
    int yearBorn;
    char name[25];
      scanf("%d", &yearBorn);
      scanf("%s", name);
      current = push(yearBorn ,name, current);
    }

        while(head != NULL)
    {
        printf("%s,%d\n", head->name, head->yearBorn );
        //printf("%p\n", current->next);
        head = head->next;

    }
    return 0 ;
}

1 Ответ

0 голосов
/ 27 апреля 2020
#include<stdio.h>
#include<conio.h>
void insert();
void display();
struct person
{
   char name[20];
   int dob;
   struct person *link;
}*start=NULL;
void main()
{
    int op;
    do
{
    printf("\nENTER YOUR OPTION:");
    printf("1.insert 2.display 3.exit:");
    scanf("%d",&op);
    switch(op)
    {
        case 1:
            insert();
            break;
        case 2:
            display();
            break;
        case 3:
            printf("***EXIT***");
            break;
        default:
            printf("INVALID OPTION");
            break;
    }
}
while(op!=3);
}
void insert()
{
struct node *temp=(struct node *)malloc(sizeof(struct node));
printf("ENTER THE NAME:");
scanf("%s",&temp->name);
printf("ENTER THE DOB:");
scanf("%s",&temp->dob);
temp->link=NULL;
if(start==NULL)
{
start=temp;
}
else
{
    temp->link=start;
    start=temp;
}
}
void display()
{
struct node *temp;
for(temp=start;temp!=NULL;temp=temp->link)
{
    printf("->%s",temp->name);
    printf("->%d",temp->dob);   
}
}
...