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