#include
<
stdio.h
>
#include < stdlib.h >
#define N 10
typedef struct student
{
int num;
float score;
struct student * next;
}STU;
STU * create()
{
int i;
STU * p, * head = NULL, * tail = head;
for (i = 0 ;i < N;i ++ )
{
p = (STU * )malloc( sizeof (STU));
scanf( " %d%f " , & p -> num, & p -> score);
p -> next = NULL;
if (p -> num < 0 )
{
free(p);
break ;
}
if (head == NULL)
head = p;
else
tail -> next = p;
tail = p;
}
return head;
}
void output(STU * p)
{
while (p != NULL)
{
printf( " %d\t%.2f\n " ,p -> num,p -> score);
p = p -> next;
}
}
STU * reverse(STU * p)
{
STU * p1, * p2, * head;
p1 = p2 = head = p;
while (p != NULL)
{
p = p -> next;
if (p1 == head)
p1 -> next = NULL;
else
p1 -> next = p2;
p2 = p1;
p1 = p;
}
head = p2;
return head;
}
int main( int argc, char * argv[])
{
STU * a;
printf( " \n请输入链表a的信息,学号小于零时结束输入:格式(学号 成绩)\n " );
a = create();
printf( " \n链表a的信息为:\n " );
output(a);
a = reverse(a);
printf( " \n反序链表a的信息为:\n " );
output(a);
return 0 ;
}
#include < stdlib.h >
#define N 10
typedef struct student
{
int num;
float score;
struct student * next;
}STU;
STU * create()
{
int i;
STU * p, * head = NULL, * tail = head;
for (i = 0 ;i < N;i ++ )
{
p = (STU * )malloc( sizeof (STU));
scanf( " %d%f " , & p -> num, & p -> score);
p -> next = NULL;
if (p -> num < 0 )
{
free(p);
break ;
}
if (head == NULL)
head = p;
else
tail -> next = p;
tail = p;
}
return head;
}
void output(STU * p)
{
while (p != NULL)
{
printf( " %d\t%.2f\n " ,p -> num,p -> score);
p = p -> next;
}
}
STU * reverse(STU * p)
{
STU * p1, * p2, * head;
p1 = p2 = head = p;
while (p != NULL)
{
p = p -> next;
if (p1 == head)
p1 -> next = NULL;
else
p1 -> next = p2;
p2 = p1;
p1 = p;
}
head = p2;
return head;
}
int main( int argc, char * argv[])
{
STU * a;
printf( " \n请输入链表a的信息,学号小于零时结束输入:格式(学号 成绩)\n " );
a = create();
printf( " \n链表a的信息为:\n " );
output(a);
a = reverse(a);
printf( " \n反序链表a的信息为:\n " );
output(a);
return 0 ;
}