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);
}
}