腾讯2014校招笔试--排队系统

public class People
{
private:
    int index;
public:
    People()
	{
	    index = -1;
	}
    int getIndex()
	{
	    return index;
	}
	void InQueue(MyQueue queue)
	{
	    queue.add(this);
	}
	void OutQueue(MyQueue queue)
	{
	    queue.del(this);
	}
	void UpdateIndex(int i)
	{
	    this.index = i;
	}
}

typedef struct Node
{
    struct Node * m_pre;
	People * m_pPeople;
	struct Node * m_pro;
} 
public class MyQueue
{
public:
    MyQueue()
	{
	    root = NULL;
		n = 0;
	}
	void Add(People * pPeople)
	{
	    if(p != NULL)
		{
		    Node * p = new Node();
			p -> m_pre = NULL;
			p -> m_pPeople = pPeople;
			p -> m_pro = root;
			if(root != NULL)
			{
			    root -> p_pro -> pre = p;
			}
			root = p;
			++n;
            p -> UpdateIndex(n);
			
		}
	}
	bool Del(People * pPeople)
	{
	    if(pPeople == NULL || root == NULL)
		    //throw exception("");
			return false;
		Node * p = root;
		int index = n;
		while(p != NULL && p -> m_pPeople != pPeople)
		{
		    p = p -> m_pro;
			--index;
		}
		if(p == NULL)
		    //throw exception("");
			return false;

		if(p -> m_pro != NULL)
		{
			p -> m_pro -> m_pre = p -> m_pre;
		}
		if(p -> m_pre != NULL)
		{
			p -> m_pre -> m_pro = p -> m_pro;
		}
		else
		{
			root = p -> m_pro;
		}
		
		Node * q = p -> m_pre;
		
		while(q != NULL)
		{
			q -> m_pPeople -> UpdateIndex(index++);
			q = q -> m_pre;
		}
		n = index -1;
		
		pPeople -> UpdateIndex(-1);
		delete p;
		p = NULL;
		
		return true;
	}
private:
    Node * root;
	int n;
} 


腾讯2014校招笔试--排队系统

1 请设计一个排队系统,能够让每个进入队伍的用户都能看到自己在队列中所处的位置和变化,队伍可能随时有人加入和退出;当有人退出影响到用户的位置排名时需要及时反馈到用户。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值