Пример #1
0
static inline struct page * __rb_insert_page_cache(struct inode * inode,
												   struct page * pnode,
												   struct rb_node * node)
{
	struct rb_node ** p = &inode->i_rb_page_cache.rb_node;
	struct rb_node * parent = NULL;
	struct page * page;

	while (*p)
	{
		parent = *p;
		page = rb_entry(parent, struct page, rb_page_cache);

		if (wordcmp(pnode->word,page->word) < 0)
			p = &(*p)->rb_left;
		else if (wordcmp(pnode->word,page->word) > 0)
			p = &(*p)->rb_right;
		else
			return page;
	}

	rb_link_node(node, parent, p);

	return NULL;
}
Пример #2
0
int main(int argc,char* argv[])
{
    FILE *fin,*fout;
    int i=0,j,num,exist[N]={0};
    char sort[N][N],ch;
    char *dic[N],*tmp;
    freopen(argv[1],"r",stdin);
    freopen(argv[2],"w",stdout);
    while(1)
    {
      scanf("%s",sort[i++]);
      ch=getchar();
//      if(ch==' ')ch=getchar();
  //    else if(ch==EOF)break;
      if(ch==EOF)break;
      else continue;
   }
   num=i;
   for(i=0;i<num;i++)
   {
      for(j=i+1;j<num;j++)
      {
         if(sameword(&sort[i][0],&sort[j][0])==1)
         {
            exist[j]=1;break;
         }
      }   
   }
   
   j=0;
   for(i=0;i<num;i++)
   {
      if(exist[i]==0)
         {dic[j++]=sort[i];}
   }
   //for(i=0;i<j;i++)printf("%s ",dic[i]);
   //putchar(10); 
   num=j;
   for(i=0;i<num;i++)
   {
      for(j=num-1;j>i;j--)
      {
         if(wordcmp(dic[j],dic[j-1])==1)
         {
            tmp=dic[j];
            dic[j]=dic[j-1];
            dic[j-1]=tmp;   
         }  
      }
   }
    //swappointer(&dic[j],&dic[j-1]);
   //swappointer(&dic[1],&dic[num-2]);
   //sortasdic(dic,num);
   
   for(i=0;i<num;i++)printf("%s ",dic[i]);

    fclose(stdin);
    fclose(stdout); 
    return 0;
}
Пример #3
0
struct page * rb_search_page_cache(struct inode * inode,
						 struct page * node)
{
	struct rb_node * n = inode->i_rb_page_cache.rb_node;
	struct page * page;

	while (n)
	{
		page = rb_entry(n, struct page, rb_page_cache);
		if (wordcmp(node->word,page->word)<0)
			n = n->rb_left;
		else if (wordcmp(node->word,page->word)>0)
			n = n->rb_right;
		else
			return page;
	}
	return NULL;
}