您的位置:首页 > 其它

公司的技能鉴定上机题——Hash冲突排序算法4

2012-04-12 17:14 204 查看
//保存在输出链表中,在插入的同时进行直接插入排序

DWORD SortByCount::InsertToOutPutList(DWORD dwValue, DWORD dwLength)

{

 //申请节点内存

    OutPutNode * s = (OutPutNode*)pmalloc(sizeof(OutPutNode));

 

 //赋值

    s->dwValue   = dwValue;

    s->ListCount = dwLength;

 s->next      = NULL;

 s->prev      = NULL;

    //插入链表

    if(0 == m_OutPutList->size)

    {

        //第一次插入节点

        m_OutPutList->Head = s;

  m_OutPutList->Tail = s;

  m_OutPutList->size++;

  return SUCCESS;

    }

    else

    {

  OutPutNode *p = m_OutPutList->Tail; //从尾节点,反向插入排序

       

  //比较插入,考虑到数组不可能重复,因此无需做相等或者比头结点小的判断

  while(p!=NULL)

  {

   if(p->dwValue < s->dwValue)

   {

    //如果是尾节点,需要特殊处理

    //

    if(p->next == NULL)

    {

     p->next = s;

     s->prev = p;

     m_OutPutList->Tail = s;

     m_OutPutList->size++;

     return SUCCESS;

    }

    //插入到P节点之后

    s->next = p->next;

    p->next->prev = s;

    s->prev = p;

    p->next = s;

    m_OutPutList->size++;

    return SUCCESS;

   }

   p=p->prev;//向前移动

  }

  

  //比头结点还小时插入到头结点之前;

  m_OutPutList->Head->prev = s;

  s->next = m_OutPutList->Head;

  m_OutPutList->Head =s;

  m_OutPutList->size++;

  return SUCCESS;

    }

 return SUCCESS;

 

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法 null