Ejemplo n.º 1
0
Archivo: event.c Proyecto: marayl/aug
AUGUTIL_API aug_result
aug_readevent(aug_events_t events, struct aug_event* event)
{
    struct link_* next;

    /* Consume from local stack if not empty. */

    next = poplink_(&events->local_);
    if (!next) {

        /* Otherwise populate local from shared stack. */

        if (loadcasptr_(events, &events->local_) < 0)
            return -1;
        if (!events->local_) {
            /* Wakeup marker has already been written. */
            aug_setexcept(aug_tlx, AUG_EXBLOCK);
            return -1;
        }

        /* Reverse the stack so that it effectively becomes a queue. */

        reverse_(&events->local_);
        next = poplink_(&events->local_);
    }

    /* Set output event. */

    event->type_ = next->type_;
    if ((event->ob_ = next->ob_))
        aug_retain(event->ob_);

    destroylink_(next);
    return 0;
}
int main(){
	int n, i, start, end;
	scanf("%d", &n);
	while(n--){
		scanf("%s%s", s, t);
		reverse_(s), reverse_(t);
		for(i = 0; i < 300 - 1; i++)
			s[i] += t[i], s[i+1] += s[i] / 10, s[i] %= 10;
		for(start = 0; s[start] == 0; start++);
		for(end = 300 - 1; s[end] == 0; end--);
		for(i = start; i <= end; i++)
			putchar('0' + s[i]);
		putchar(10);
		for(i = 0; i < 300; i++)
			s[i] = t[i] = 0;
	}
	return 0;
}
Ejemplo n.º 3
0
 void nextPermutation(vector<int>& nums) {
     // 1 4 6 5 2 0
     if(nums.empty())
         return;
     int i=nums.size()-2;
     for(;i>=0;i--){
         if(nums[i]<nums[i+1])
             break;
     }
     if(i>=0){
         //记住一个案例,一开始从后往前,先找到第一个比后面小的,能够保证后面的数字从后往前递增
         //接下来,比较从下一个位置开始,谁第一个小雨他,看实例即可
         // 1 3 5 4 2 0 
         int j=i+1;
         while(j<nums.size()&&nums[j]>nums[i]){
             j++;
         }
         j--;
         swap(nums[i],nums[j]);
     }
     reverse_(nums,i+1);
 }
Ejemplo n.º 4
0
char *getext__ (const char *fname)
{
	if (fname == NULL)
		return NULL;
	int len = strlen (fname);
	int i;
	char *ext = NULL;
	i = 0;
	if (len == 0)
		return  NULL;

	ext = (char *) malloc ( sizeof (char) * strlen (fname) );
	while ((fname [len] != '.') && (fname [len] != '/') && len != 0)
	{
		if ((fname [len] != '\n') && (fname [len] != '\0'))
			ext[i++] = fname [len--];
		else
			len--;
	}
	ext[i] = '\0';
	printf("%s\n", ext);
	reverse_ (ext);
	return ext;
}