第2个回答 2010-07-07
#include <stdio.h>
#include <stdlib.h>
struct TLink {
int data;
struct TLink * next;
};
void insert(struct TLink ** root, int data)
{
struct TLink * r = 0, *n = 0, * p = 0;
if(!root) return ;
n = (struct TLink *)malloc(sizeof(*n));
n->data = data; n->next = 0;
if(!*root) { *root = n; return ; }
r = *root;
if(data > r->data) { n->next = r; *root = n; return ;}
while(r) {
p = r ->next;
if(!p) { r->next = n; return ;}
if(data > p->data) { r->next = n; n->next = p; return;}
r = p;
}
}
int pos(struct TLink * root, int data)
{
int p = 1, q = 0; struct TLink * r = 0;
r = root;
if(!r) return p;
q = r->data;
while(r) {
if(q==r->data)
p++;
else
q = r->data;
if(r->data == data) break;
r = r->next;
}
return p;
}
int main(void)
{
int n = 0, i=0, x= 0;
struct TLink * root = 0;
scanf("%d", &n);
if(n < 1 || n > 100) return 0;
for(i=0; i<n; i++) {
scanf("%d", &x);
insert(&root, x);
}
scanf("%d", &x);
x = pos(root, x);
printf("%d\n", x);
return 0;
}本回答被提问者采纳