C语言链表求助!
/* 建立一个链表,每一个结点包括:学号,姓名,性别,年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结
点删去,否则提示用户输入学号,姓名,性别等信息,并插入该结点、、、 */
/*******************************************************************/
#include <stdio.h>
#include <stdlib.h>
#define N 10
struct node * print_link(struct node * head); /* 打印链表 */
struct node {
int id;
char name[N];
int sex;
int age;
struct node * next;
};
int main(void)
{
struct node * head;
struct node * temp;
struct node * add_temp;
int n;
head = (struct node *) malloc(sizeof(struct node));
temp = head;
/* 创建链表首结点 */
temp->next = NULL;
printf("请输入你想录取的学生的个数: ");
scanf("%d", &n);
printf("\n");
while (add_temp != NULL)
{
add_temp = (struct node *) malloc(sizeof(struct node));
printf("学生学号id = ");
scanf("%d", &add_temp->id);
printf("student name is(学生名字): ");
getchar();
gets(add_temp->name);
printf("Enter the sex(0代表男生,1代表女生): ");
scanf("%d", &add_temp->sex);
printf("输入学生的年龄: ");
scanf("%d", &add_temp->age);
printf("\n");
n--;
temp->next = add_temp;
temp = temp->next;
if (n == 0)
{
printf("学生信息已经录完!\n");
printf("**********************************\n");
break;
}
}
print_link(head);
return 0;
}
struct node * print_link(struct node * head)
{
struct node * temp;
temp = head->next;
int i = 1;
while (temp != NULL)
{
printf("这个是第%d个学生的资料.\n", i);
printf("id = %d. name = %s. sex = %d. age = %d.\n", temp->id, temp->name,
temp->sex, temp->age);
temp = temp->next;
i++;
}
return temp;
}
i和n的数值有一个问题,就是n=0循环结束的时候,i会多一个