c - 链表添加和打印
问题描述
- 将 (Person) 结构实现为列表;
- 创建一个将新成员添加到列表的函数;
- 创建一个打印出列表中所有元素的函数。
事实上我现在不知道我的代码有什么问题
到目前为止我的代码
#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);
}
}
推荐阅读
- reactjs - 如何通过 AWS AppSync 客户端将包含字符串的变量传递给 GraphQL 查询?
- java - 如果使用 Stream.allMatch(),如何为空列表返回 false?
- javascript - 通过 AJAX 将 html 数据从 div 复制到 MySQL 数据库
- javascript - 使用 js 库显示文档、docx 文件?除了 jquery 是否还有其他库
- postgresql - Rails:在所有表中的日期时间列中递增
- c# - Declaring local variable of unknown type
- guava - Apache Beam: Coder Inference by TypeDescriptor
- excel - Repeat formula every time a criteria is met in Excel
- winapi - Is it possible to "transparent" the background of "edit box" in mfc vc++?
- xamarin - 用于更新 ViewModel 属性的 ViewCell 按钮