注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Aspirer's blog

停止维护,新博客地址:http://aspirer.wang/

 
 
 

日志

 
 

队列  

2009-08-15 22:34:05|  分类: 学习心得 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

队列 - aspirer - Aspirers blog

 

#include

using namespace std;

typedef struct node
{
 int data;
 struct node *next;
}Node;

typedef struct queue
{
 Node *first;
 Node *trail;
}Queue;

Queue *Insert(Queue *que, int d)
{
 Node *tmp = (Node *)malloc(sizeof(Node));
 
 if (tmp == NULL)
 {
  cerr << "memory allocation error." << endl;
  return que;
 }
 tmp->data = d;
 tmp->next = NULL;
 
 if (que->trail == NULL)
 {
  que->first = tmp;
  que->trail = tmp;
 }
 else
 {
  que->trail->next = tmp;
  que->trail = tmp;
 }

 return que;
}

//void test(int *p, int m, int n)
//{
// for (int i = 0; i < m; ++i)
// {
//  for (int j = 0; j < n; ++j)
//  {
//   cout << *(p + n * i + j) << " ";
//  }
//  cout << endl;
// }
// 
//}

Queue *Creat()
{
 int d; 
 Queue *que = (Queue *)malloc(sizeof(Queue));
 que->first = NULL;
 que->trail = NULL;
 cout << "input data." << endl;
 cin >> d;
 fflush(stdin);
 
 while (d != 0)
 {
  que = Insert(que, d);
  cout << "input data." << endl;
  cin >> d;
  fflush(stdin);
 }
 return que;
}

void Free(Queue *que)
{
 Node *tmp;
 if (que == NULL)
 {
  return;
 }
 while (que->first != que->trail)
 {
  tmp = que->first;
  que->first = que->first->next;
  cout << tmp->data << " was released." << endl;
  free(tmp);
 }
 cout << que->first->data << " was released." << endl;
 free(que->first);
 free(que);
}

void Pop(Queue *que)
{
 Node *tmp;
 if (que == NULL)
 {
  return ;
 }
 if (que->first == NULL)
 {
  return ;
 }
 if (que->first == que->trail)
 {

   tmp = que->first;
  que->first = NULL;
  que->trail = NULL;
  free(tmp);
 }
 else
 {
  tmp = que->first;
  que->first = que->first->next;
  free(tmp);
 }

}

Node *GetFront(Queue *que)

{

    return que->first;

}

int Len(Queue *que)
{
 Node *p;
 int len = 0;
 if (que == NULL)
 {
  return len;
 }
 else if (que->first == NULL)
 {
  return len;
 }

 p = que->first;
 while (p != NULL)
 {
  p = p->next;
  len++;
 }
 return len;
}

void Print(Queue *que)
{
 Node *p;
 //int len = 0;
 if (que == NULL)
 {
  cout << "NULL queue." << endl;
 }
 else if (que->first == NULL)
 {
  cout << "empty queue." << endl;
 }

 p = que->first;
 while (p != NULL)
 {
  cout << p->data;
  p = p->next;
  if (p)
  {
   cout << "<--";
  }
 }
 cout << endl;
}

int main()
{
 //int a[2][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}};
 //test(&a[0][0], 2, 4);
 Queue *que;// = (Queue *)malloc(sizeof(Queue));
 //que->first = NULL;
 //que->trail = NULL;
 que = Creat();
 cout << "queue length = " <<  Len(que) << endl;
 Print(que);
 Node *no = Pop(que);
 cout << no->data << " was poped."<< endl;
 free(no);
 Free(que);
 return 0;
}

  评论这张
 
阅读(355)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018