首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

xx嘻嘻解决办法

2012-12-27 
xx嘻嘻#include stdio.h#include stdlib.hint Enqueue(char priority[4], int data)int Dequeue(int*

xx嘻嘻
#include <stdio.h>
#include <stdlib.h>


int Enqueue(char priority[4], int data);
int Dequeue(int* data);
void print();


void main(void)
{
    char priority[4];
    int  data;
    int  sum = 0;
    int l = 0;
    int c = 0;

    for ( l = 0; l < 10; l++)
    {
        for ( c = 0; c < 10000; c++)
        {
            if ((rand() % 3) <= 1)
            {
                data = rand() % 100;
    
                priority[0] = 'A' + (rand() % 4);
                priority[1] = 'A' + (rand() % 4);
                priority[2] = 'A' + (rand() % 4);
                priority[3] = 'A' + (rand() % 4);

                printf("enq%d\t%c%c%c%c\n", data, priority[0], priority[1], priority[2], priority[3]);
                Enqueue(priority, data);
            }
        }
       
        //printf("sum: %d\n", sum);
    }
     print();
}




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



typedef struct queue{
     char priority[4];
     int data;
     struct queue *next;
     struct queue *prev;
}myqueue;

static myqueue head = {0, 0, NULL, NULL};

int ComparePriority(char *pchar, char *pchar2, int n)
{
      int i = 0;
  
      for(i = 0; i < n; i++)
      {
           if((pchar[i] - pchar2[i]) == 0)
continue;

            if((pchar[i] - pchar[i]) < 0)
return 1;
   else
   return -1;
      }

       return 0;
}

int Enqueue(char priority[4], int data)
{
    myqueue *queue = (myqueue *)malloc(sizeof(myqueue));


    int i = 0;
    int result = 0;
    myqueue *pTemp = NULL;
    myqueue *phead = NULL;

    if(queue == NULL)
return -1;
    //memset(queue, 0x00, sizeof(myqueue));
    queue->data = data;
    for(i = 0; i < 4; i++)
queue->priority[i] = priority[i];
    queue->next = NULL;
    queue->prev = NULL;
    
    if((&head)->next == NULL)
    {
         (&head)->next = queue;
         queue->prev = (&head);
         
return 1;
    }
   // printf("insert start\n");
    phead = (&head)->next;
     while(phead != NULL)
     {
          pTemp = phead;
          result = ComparePriority(pTemp->priority, queue->priority, 4);

          if(result == 0) //same priority
          {
                if((queue->data > pTemp->data) || (queue->data == pTemp->data)) //insert after
                {
                 
if(pTemp->next == NULL) //pTemp is the last
{
     pTemp->next = queue;
     queue->prev = pTemp;
              break;
}
else if(ComparePriority(pTemp->next->priority, queue->priority, 4) == 0) 
                     {
                         phead = pTemp->next;
                         continue;
                     }
else
{
    pTemp->next->prev = queue;
             queue->prev = pTemp;
             queue->next = pTemp->next;
             pTemp->next = queue;
    break;
}
                }
else
        {


              queue->next = pTemp;
     queue->prev = pTemp->prev;
     pTemp->prev->next = queue;
     pTemp->prev = queue;
        }

                 break;
          }
          else if(result == 1) //new higher insert before
          {
                queue->next = pTemp;
       queue->prev = pTemp->prev;
       pTemp->prev->next = queue;
       pTemp->prev = queue;

       break;
          }
          else // new lower 
          {
                if(pTemp->next != NULL)
                {
                  phead = pTemp->next;
           continue;
                }
       else // can't find lower than queue, insert the last
      {
            pTemp->next = queue;
   queue->prev = pTemp;
   break;
      }
          }
  
     }

    // printf("insert end\n");

    return 1;
}

void print()
{
      myqueue *phead = NULL;
      myqueue *pTemp = NULL;
      phead = (&head)->next;
      
     while(phead != NULL)
     {
          pTemp = phead;   
          printf("%d\t%c%c%c%c\n", pTemp->data, pTemp->priority[0], pTemp->priority[1], pTemp->priority[2], pTemp->priority[3]);
          phead = pTemp->next;           
     }
}

int Dequeue(int* data)
{
    myqueue *queue = NULL;    

    if((&head)->next == NULL)
return -1;

    queue = (&head)->next;


    (&head)->next = queue->next;
    queue->next->prev = &head;
    *data = queue->data;
    free(queue);
    queue = NULL;

    return 1;
}


[最优解释]
我还以为是炫耀、搞笑的帖子呢
[其他解释]
上来就一大段代码,你是要干吗
[其他解释]
求欣赏,求xx,求嘻嘻
[其他解释]
贴了一段代码,然后笑了笑。神马意思
[其他解释]
嘻嘻,


好可爱的头像啊~!
[其他解释]
int Enqueue(char priority[4], int data);
这个声明中的常量4就是一个没有任何意义的成分,你把它改成其它整数或者省略它,看看编译器有什么反应?
[其他解释]
null
[其他解释]
null
[其他解释]
null
[其他解释]
null
[其他解释]
null

热点排行