#include <stdlib.h>
#include <assert.h>
#include <stdio.h>
typedef struct NODE
{
int value;
struct NODE *link;
} Node;
/* 创建一个链表 */
Node* newnode( int value )
{
Node *new;
new = (Node *)malloc( sizeof( Node ) );
assert( new != 0 );//如果new = NULL,则打印错误报告
new -> value = value;
return new;
}
/* 创建插入链表 */
int sll_insert( register Node **linkp, int new_value )
{
register Node *current;
register Node *new;
while( ( current = *linkp ) != NULL && current -> value < new_value )
linkp = ¤t -> link;
new = ( Node* )malloc( sizeof( Node));
if( new == NULL )
return 0;
new -> value = new_value;
new -> link = current;
*linkp = new;
return 1;
}
struct NODE * sll_reverse( struct NODE *current )
{
struct NODE *previous;
struct NODE *next;
for( previous = NULL; current != NULL; current = next )
{
next = current -> link;
current -> link = previous;
previous = current;
}
return previous;
}
int main()
{
Node *root;
root = newnode( 5 );//root指向第一个链表
root -> link = NULL;//第一个link字段设置为NULL
sll_insert( &root, 3 );//插入第二个链表
sll_insert( &root, 7 );//插入第三个链表
/* 顺序排列 */
printf( "%d\n", root -> value);
printf( "%d\n", root -> link -> value);
printf( "%d\n", root -> link -> link -> value);
printf( "\n\n");
root = sll_reverse( root );//反向排序
/* 反序排列 */
printf( "%d\n", root -> value);
printf( "%d\n", root -> link -> value);
printf( "%d\n", root -> link -> link -> value);
return 0;
}
反序排列单链表
猜你喜欢
转载自blog.csdn.net/sanpam/article/details/83240319
今日推荐
周排行