终于看完了链表,拿出来晒晒。。。。。。。。。。
程序代码:#include < stdio.h >
#include < stdlib.h >
#include < malloc.h >
#define NULL 0
#define LEN sizeof ( struct student )
struct student
{
long num;
float score;
struct student *next;
};
int n;
struct student *creat ( void )
{
struct student *head;
struct student *p1, *p2;
n = 0;
p1 = p2 = ( struct student* ) malloc ( LEN );
scanf ( "%ld, %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 ( "%ld,%f", &p1->num, &p1->score );
}
p2->next = NULL;
return(head);
}
void print ( struct student *head )
{
struct student *p;
printf ( "\nNow, These %d records are:\n", n );
p = head;
if ( head != NULL )
do
{
printf ( "%ld %5.1f\n", p->num, p->score );
p = p->next;
}
while ( p!= NULL );
}
struct student *del ( struct student *head, long num )
{
struct student *p1, *p2;
if ( head == NULL )
{
printf ( "\nlist null! \n" );
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:%ld\n", num );
n = n -1;
}
else
printf ( "%ld not been found! \n", num );
return ( head );
}
struct student *insert ( struct student *head, struct student *stud )
{
struct student *p0, *p1, *p2;
p1 = head;
p0 = stud;
if ( head == NULL )
{
head = p0;
p0->next = NULL;
}
else
{
while ( ( p0->num > p1->num ) && ( p1->next != NULL ) )
{
p2 = p1;
p1 = p1->next;
}
if ( p0->num > p1->num )
{
if ( head == p1 )
head = p0;
else
p2 ->next = p0;
p0->next = p1;
}
else
{
p1->next = p0;
p0->next = NULL;
}
}
n = n + 1;
return ( head );
}
void main ( )
{
struct student *head, stu;
long del_num;
printf ( "input records:\n" );
head = creat ( );
print ( head );
printf ("\ninput the deleted number:" );
scanf ( "%ld",&del_num );
head = del ( head, del_num );
print ( head );
printf ( "\ninput the inserted record: " );
scanf ( "%ld,%f", &stu.num, &stu.score );
head = insert ( head, &stu );
print ( head );
system ( "pause" );
}









