无序链表实现优先队列

来源:互联网 发布:linux shutdown -h 编辑:程序博客网 时间:2024/04/20 03:20

using namespacestd;

typedef struct node

{

   int data;

   structnode* next;

}*PNode,Node;


PNode create(int a[],int n)

{

   PNode header;

   PNode p = header =new node;

   if (!p)

    {

        cout <<"create failed!"<<endl;

       returnNULL;

    }

    p->data = a[0];

    p->next =NULL;

   for (int i =1;i < n;++i)

    {

      PNode q = newnode;

      if (!q)

       {

           --i;

          continue;

       }

        q->data = a[i];

        q->next = p->next;

        p->next = q;

        p = q;

    }

   return header;

}


void deleteNode(PNode header)

{

   PNode p = header;

   while (p)

    {

       PNode q = p->next;

       PNode max= p;

       PNode prev = p;

       PNode tempP=NULL;

       while (q)

        {

           if (max->data < q->data)

            {

                max = q;

                tempP = prev;

            }

            prev = q;

            q = q->next;

        }

        

       if (!max->next)

        {

           if (tempP)

            {

                tempP->next =NULL;

            }

           else

            {

               if(max == header)

                {

                    header = header->next;

                }

            }

            

        }

       elseif(max != header)

        {

            tempP->next = max->next;

        }

       elseif(max == header)

        {

            header = header->next;

        }

       cout<<max->data<<" ";

        

       delete max;

        max =NULL;

        p = header;

        

    }

}


void showLink(PNode header)

{

   PNode p = header;

   while (p)

    {

       cout<<p->data<<" ";

        p = p->next;

    }

}

//可以实现数据的从大到小排序
原创粉丝点击