上课玩DS被老师说成在玩偷菜,哥华丽丽的囧了。课上大讲特讲链表如何倒序,实在无聊,开个电脑花个20分钟写了以下代码。

Code#include
#include
typedef struct A
{
int data;
struct A *next;
} str;
str * head;
void create ();
void print ();
void reserve ();
void printReserve ();
int main()
{
printReserve();
return 0;
}
void create ()
{
int i = 0;
str *p = head = (str *)malloc (sizeof ( str ));
p->data = 0;
p->next = NULL;
for( i = 1; i < 4; i++)
{
p->next = (str*) malloc (sizeof ( str ));
p = p->next;
p->data = i;
p->next = NULL;
}
}
void print ( )
{
str *p;
int n;
for (p = head, n = 0; p!= NULL; p = p->next,n ++)
{
printf ("NO.%2d/tdata:%4d/n", n, p->data);
}
}
void reserve()
{
str *p1 = head, *p2 = NULL, *p3 = NULL;
while (p1 != NULL)
{
p2 = p1;
p1 = p1->next;
p2->next = p3;
p3 = p2;
}
head = p2;
}
void printReserve ()
{
create ();
printf ("Befroe reserve:/n");
print ();
reserve ();
printf ("Afte reserve:/n");
print ();
}
测试结果如下:
E:/Programming/works/c>gcc linkList.c -o linkList.exe
E:/Programming/works/c>linkList.exe
Befroe reserve:
NO. 0 data: 0
NO. 1 data: 1
NO. 2 data: 2
NO. 3 data: 3
Afte reserve:
NO. 0 data: 3
NO. 1 data: 2
NO. 2 data: 1
NO. 3 data: 0
PS:顺便测试一下刚下的插入代码的插件能否使用