满意答案

sjhgs808
2014.07.06

采纳率:58% 等级:11
已帮助:7202人
这是我在以前写的代码的基础上修改的,main里完成的就是找出最小值节点然后插入表头:
#include
#include
typedef struct _list {
int val;
struct _list* next;
} *node, list;
node Insert( node* head, node pos, int val )
{
node tmp;
tmp = ( node )malloc( sizeof( list ) );
tmp->val = val;
tmp->next = pos ? pos->next : *head;
if ( pos ) {
pos->next = tmp;
} else {
*head = tmp;
}
return tmp;
}
node Create( int* beg, int* end )
{
node head, t;
head = t = NULL;
while ( beg != end ) {
t = Insert( &head, t, *beg++ );
}
return head;
}
void Print( node head )
{
while ( head ) {
printf( "%d ", head->val );
head = head->next;
}
putchar( '\n' );
}
int main()
{
int a[] = { 6,1,3,9,2,8,5,0,7,4 };
node head, min, prev, next;
head = Create( a, a + 10 );
Print( head );
min = prev = next = head;
while ( next->next ) {
if ( min->val > next->next->val ) {
prev = next;
min = next->next;
}
next = next->next;
}
prev->next = min->next;
min->next = head;
head = min;
Print( head );
getchar();
return 0;
}
10分享举报


被折叠的 条评论
为什么被折叠?



