
如何定义单链表,和写一个输入函数(学号,姓名,性别)?
2个回答
展开全部
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>
#define N 5
typedef struct node *link;
struct node {
int num;
char name[20];
char sex;
link next;
};
link NODE(int num,char name[],char sex, link next)
{
link t = malloc(sizeof *t);
t->num = num;
t->sex = sex;
strcpy(t->name,name);
t->next = next;
return t;
}
void insert_node(link head, int num,char name[],char sex)
{
link t;
for (t = head; t->next; t = t->next)
if (num <= t->next->num)
break;
t->next = NODE(num,name,sex, t->next);
}
void show_list(link head)
{
link t;
for (t = head->next; t; t = t->next){
printf("%3d\t", t->num);
printf("%s\t",t->name);
printf("%c\t",t->sex);
}
printf("\n");
}
int main(void)
{
int i,num;
char name[20] = {0},temp[10] = {0};
char sex;
link head = NODE(0,"\0",0, NULL);
for (i = 0; i < N; i++){
printf("please input number\n");
fgets(temp,10,stdin);
num = atoi(temp);
printf("please input name\n");
fgets(name,sizeof(name),stdin);
name[strlen(name) - 1] = '\0';
printf("please input sex\n");
fgets(&sex,3,stdin);
insert_node(head,num,name,sex);
}
show_list(head);
return 0;
}
看看吧
别忘了给分!
#include <time.h>
#include <stdlib.h>
#include <string.h>
#define N 5
typedef struct node *link;
struct node {
int num;
char name[20];
char sex;
link next;
};
link NODE(int num,char name[],char sex, link next)
{
link t = malloc(sizeof *t);
t->num = num;
t->sex = sex;
strcpy(t->name,name);
t->next = next;
return t;
}
void insert_node(link head, int num,char name[],char sex)
{
link t;
for (t = head; t->next; t = t->next)
if (num <= t->next->num)
break;
t->next = NODE(num,name,sex, t->next);
}
void show_list(link head)
{
link t;
for (t = head->next; t; t = t->next){
printf("%3d\t", t->num);
printf("%s\t",t->name);
printf("%c\t",t->sex);
}
printf("\n");
}
int main(void)
{
int i,num;
char name[20] = {0},temp[10] = {0};
char sex;
link head = NODE(0,"\0",0, NULL);
for (i = 0; i < N; i++){
printf("please input number\n");
fgets(temp,10,stdin);
num = atoi(temp);
printf("please input name\n");
fgets(name,sizeof(name),stdin);
name[strlen(name) - 1] = '\0';
printf("please input sex\n");
fgets(&sex,3,stdin);
insert_node(head,num,name,sex);
}
show_list(head);
return 0;
}
看看吧
别忘了给分!
追问
error C2440: 'initializing' : cannot convert from 'void *' to 'struct node *'
Conversion from 'void*' to pointer to non-'void' requires an explicit cast
执行 cl.exe 时出错.
aaa.obj - 1 error(s), 0 warning(s)
这:link t = malloc(sizeof *t);出错。这错误是什么意思?求助!高手帮帮忙。
追答
我这显示没错误的,对天发誓 我用的vc6.0
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询