1个回答

``````#include <stdio.h>
#include <stdlib.h>

struct ListNode{
int value ;
struct ListNode* next ;
};

typedef struct ListNode* pListNode ;
typedef struct ListNode ListNode ;

int main( void )
{
int value[] = {4, 5, 1, 3, 2, 7} ;
int i = 0 ;
int numOfValue = sizeof(value) / sizeof(int) ;

pListNode head = NULL ;
pListNode tmp = NULL ;
pListNode plook = NULL ;
pListNode pre = NULL ;

if( numOfValue != 0 )
{
head = (pListNode)malloc( sizeof(ListNode) ) ;
head->value = value[0] ;
head->next = NULL ;
}

for( i = 1; i < numOfValue; i++ )
{
plook = head ;
pre = NULL ;
tmp = (pListNode)malloc( sizeof(ListNode) ) ;
tmp->value = value[i] ;
tmp->next = NULL ;

while( plook != NULL )
{
if(value[i] > plook->value)
{
pre = plook ;
plook = plook->next ;

}
else
{
break ;
}

}

if( pre == NULL )
{
tmp->next = head ;
head = tmp ;
}
else
{
tmp->next = pre->next ;
pre->next = tmp ;
}
}

plook = head ;
while(plook != NULL )
{
printf(" %d\t", plook->value) ;
plook = plook->next ;
}
}
``````

D_DreKing 回复知天易，逆天难: 你补充完之后，我没看懂题。。。你的数组序列是4、5、1、3、2、7。然后你找这里面的子序列。是序列，那(3,4,5)这个答案怎么出来的？要是序列的话(1,2)(1,2,7)这都算答案呢。序列是字符之间相对原串中先后顺序不变，可以不连续。子串是需要连续的。