#include <stdio.h>
#include <malloc.h>
#define LEN sizeof(struct student)
struct student
{
long num;
float score;
struct student *next;
};
int n;
int main()
{
struct student* creat();
//struct student* del(struct student* head, long);
struct student* insert(struct student*, struct student *);
void print(struct student*);
struct student*head, stu;
//long del_num;
printf("input records: ");
head = creat();
print(head);
//printf("input the deleted number: ");
//scanf("%d",&del_num);
//head = del(head,&del_num);
//head = del(head, del_num);
//print(head);
printf("input the inserted record: ");
scanf("%d %f",&stu.num,&stu.score);
head = insert(head, &stu);
print(head);
return 0;
}
{
struct student* creat();
//struct student* del(struct student* head, long);
struct student* insert(struct student*, struct student *);
void print(struct student*);
struct student*head, stu;
//long del_num;
printf("input records: ");
head = creat();
print(head);
//printf("input the deleted number: ");
//scanf("%d",&del_num);
//head = del(head,&del_num);
//head = del(head, del_num);
//print(head);
printf("input the inserted record: ");
scanf("%d %f",&stu.num,&stu.score);
head = insert(head, &stu);
print(head);
return 0;
}
struct student *creat()
{
struct student *head;
struct student *p1, *p2;
n = 0;
p1 = p2= (struct student*)malloc(LEN);
//p2 = (struct student*)malloc(LEN);
scanf("%d %f", &p1->num, &p1->score);
head = NULL;
while (p1->num != 0)
{
n = n + 1;
if (n == 1) head = p1;
else p2->next = p1;
p2 = p1;
p1 = (struct student *)malloc(LEN);
scanf("%d %f", &p1->num, &p1->score);
}
p2->next = NULL;
return(head);
}
{
struct student *head;
struct student *p1, *p2;
n = 0;
p1 = p2= (struct student*)malloc(LEN);
//p2 = (struct student*)malloc(LEN);
scanf("%d %f", &p1->num, &p1->score);
head = NULL;
while (p1->num != 0)
{
n = n + 1;
if (n == 1) head = p1;
else p2->next = p1;
p2 = p1;
p1 = (struct student *)malloc(LEN);
scanf("%d %f", &p1->num, &p1->score);
}
p2->next = NULL;
return(head);
}
//struct student *del(struct student*head, long num)
//{
// struct student *p1, *p2;
// if (head == NULL)
// {
// printf(" list null! ");
// return(head);
// }
// p1 = head;
// while (num!=p1->num&&p1->next != NULL)
// {
// p2 = p1;
// p1 = p1->next;
// }
// if (num == p1->num)
// {
// if (p1 == head) head = p1 ->next;
// else p2->next = p1->next;
// printf("delete:%d ", num);
// n = n - 1;
// }
// else
// {
// printf("%d not been found! ", num);
// return(head);
// }
//}
//{
// struct student *p1, *p2;
// if (head == NULL)
// {
// printf(" list null! ");
// return(head);
// }
// p1 = head;
// while (num!=p1->num&&p1->next != NULL)
// {
// p2 = p1;
// p1 = p1->next;
// }
// if (num == p1->num)
// {
// if (p1 == head) head = p1 ->next;
// else p2->next = p1->next;
// printf("delete:%d ", num);
// n = n - 1;
// }
// else
// {
// printf("%d not been found! ", num);
// return(head);
// }
//}
struct student*insert(struct student*head, struct student *stud)
{
struct student*p0, *p1, *p2;
p1 =p2= head;
p0 = stud;
if (head == NULL)
{
head = p0;
p0->next = NULL;
}
else
{
//for (; (p0->num > p1->num) && (p1->next != NULL);)
while((p0->num > p1->num) && (p1->next != NULL))
{
p2 = p1;
p1 = p1->next;
}
if (p0->num <= p1->num)
{
if (head == p1)
{
head = p0;
p0->next = p2;
}
else
{
p2->next = p0; p0->next = p1;
}
}
else
{
p1->next = p0; p0->next = NULL;
}
}
n = n + 1;
return (head);
}
{
struct student*p0, *p1, *p2;
p1 =p2= head;
p0 = stud;
if (head == NULL)
{
head = p0;
p0->next = NULL;
}
else
{
//for (; (p0->num > p1->num) && (p1->next != NULL);)
while((p0->num > p1->num) && (p1->next != NULL))
{
p2 = p1;
p1 = p1->next;
}
if (p0->num <= p1->num)
{
if (head == p1)
{
head = p0;
p0->next = p2;
}
else
{
p2->next = p0; p0->next = p1;
}
}
else
{
p1->next = p0; p0->next = NULL;
}
}
n = n + 1;
return (head);
}
// if (p1->next == NULL)
// {
// if (p0->num > p1->num)
// {
// p1->next = p0;
// p0->next = NULL;
// }
// else
// {
// head = p0;
// p0->next = p1;
// }
// }
// else
// {
// p2 = p1;
// while (p0->num > p1->num)
// {
// p1 = p1->next;
// }
// if (p0->num <= p1->num)
// {
// p2->next = p0;
// p0->next = p1;
// }
// else
// {
// p1->next = p0;
// p0->next = NULL;
// }
// }
// }
//}
void print(struct student *head)
{
struct student *p;
printf("Now,these %d records are:", n);
p = head;
if (head != NULL)
do
{
printf("%d %f ", p->num, p->score);
p = p->next;
} while (p != NULL);
}
{
struct student *p;
printf("Now,these %d records are:", n);
p = head;
if (head != NULL)
do
{
printf("%d %f ", p->num, p->score);
p = p->next;
} while (p != NULL);
}
//