设有一个正整数序列组成的有序单链表(按递增次序有序,且允许有相等的整数存在),试编写能实现下列功能的算法:(要求用最少的时间和最小的空间)
(1)确定在序列中比正整数x大的数有几个(相同的数只计算一次,如序列{20,20,17,16,15,15,11,10,8,7,7,5,4}中比10大的数有5个);
(2) 在单链表将比正整数x小的数按递减次序排列;
(3) 将正整数(比)x大的偶数从单链表中删除。【东北大学 2001 二 (17分)】

struct Node ...{
int value;
struct Node * next;}
struct Node* start ;
struct Node* xstart=0;
struct Node* xend=0;
struct Node* temp=start;
struct Node* pre=start;
struct Node* saved = 0;
int cout;

while(temp!=0&&temp->value<x)...{

if(pre!=0)...{
saved=temp->next;
temp->next=pre;
pre=temp;
temp=saved;
}

else...{
//pre=start;
temp=temp->next;
}
}
//pre->next=(temp==start)?0:temp;
start->next=temp;
temp=start;
start=pre;
pre=start;
while(temp!=0&&temp->value==x)pre=temp;

while(temp!=0&&temp->value>x)...{
cout++;
saved=temp->next;

if(temp->value%2==0)...{pre->next=saved;}
else pre=temp;
}







































