C 链表添加和打印 将(Person)结构实现为列表 创建一个向列表中添加新成员的函数 创建一个打印列表中所有元素的函数

C 链表添加和打印 将(Person)结构实现为列表 创建一个向列表中添加新成员的函数 创建一个打印列表中所有元素的函数,c,data-structures,struct,C,Data Structures,Struct,事实上,我不知道我的代码现在有什么问题 我的密码到现在为止 #包括 #包括 #包括 结构人 { 字符名[50]; 国际年出生; 结构人*next; }; 结构人*推送(整数年出生,字符*名称,结构人*上一个) { 结构人*pn=malloc(sizeof(结构人)); pn->next=NULL; pn->yearBorn=yearBorn; strcpy(pn->name,name); 先前=pn; 返回pn; } int main() { struct Person*head=NULL; 结

事实上,我不知道我的代码现在有什么问题

我的密码到现在为止
#包括
#包括
#包括
结构人
{
字符名[50];
国际年出生;
结构人*next;
};
结构人*推送(整数年出生,字符*名称,结构人*上一个)
{
结构人*pn=malloc(sizeof(结构人));
pn->next=NULL;
pn->yearBorn=yearBorn;
strcpy(pn->name,name);
先前=pn;
返回pn;
}
int main()
{
struct Person*head=NULL;
结构人*当前=人头;
int n;
printf(“请输入您要添加的人数:”);
scanf(“%d\n”,&n);
对于(int i=0;iname,head->yearBorn);
//printf(“%p\n”,当前->下一步);
头部=头部->下一步;
}
返回0;
}
#包括
#包括
无效插入();
void display();
结构人
{
字符名[20];
int-dob;
结构人*链接;
}*start=NULL;
void main()
{
int op;
做
{
printf(“\n输入您的选项:”);
printf(“1.insert 2.display 3.exit:”);
scanf(“%d”和&op);
开关(op)
{
案例1:
插入();
打破
案例2:
显示();
打破
案例3:
printf(“***退出***”);
打破
违约:
printf(“无效期权”);
打破
}
}
而(op!=3);
}
空白插入()
{
结构节点*temp=(结构节点*)malloc(sizeof(结构节点));
printf(“输入名称:”);
scanf(“%s”,&temp->name);
printf(“输入DOB:”);
扫描频率(“%s”,&temp->dob);
temp->link=NULL;
if(start==NULL)
{
启动=温度;
}
其他的
{
温度->链接=开始;
启动=温度;
}
}
无效显示()
{
结构节点*temp;
对于(temp=start;temp!=NULL;temp=temp->link)
{
printf(“->%s”,临时->名称);
printf(“->%d”,temp->dob);
}
}

好吧,你没有问题,那么这个问题就没有任何答案了。当你开始报告时,你能看到
head
仍然是
NULL
?您正在向
current
写入内容,但这不会神奇地改变
标题。。我现在该怎么办。plz..函数中未使用push()的第三个参数。参数是写入的,但这没有任何作用,因为C参数是本地副本。存在对基本概念的误解。C不像Excel,参数是值副本。如果不帮你完成整个任务,我看不出我们还能帮上多少忙。你应该和你的教授/助教谈谈。
#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 ;
}
#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);   
}
}