`
jaychang
  • 浏览: 713131 次
  • 性别: Icon_minigender_1
  • 来自: 嘉兴
社区版块
存档分类
最新评论

链队列插入,删除,查找操作的实现

 
阅读更多
#include<iostream>
#include<stdlib.h>

#define TRUE 1
#define FALSE 0

using namespace std;

typedef struct LinkQueueNode{
  char data;
  LinkQueueNode *next;
}LinkQueueNode;


typedef struct LinkQueue{
  LinkQueueNode *front;
  LinkQueueNode *rear;
  int length;
  int lengthOfCurrent;
}LinkQueue;


LinkQueue *Q=(LinkQueue*)malloc(sizeof(LinkQueue));

//初始化队列操作,定义队列长度
int InitialQueue(LinkQueue *Q)
{
  Q->front=(LinkQueueNode*)malloc(sizeof(LinkQueueNode));
  if(Q->front!=NULL){
     Q->front->next=NULL;
     Q->rear=Q->front;
     cout<<"输入队列长度\n";
     cin>>Q->length;
     Q->lengthOfCurrent=0;
     return TRUE;
  }
  else
    return FALSE;
}

//将元素入队操作
int EnterQueue(LinkQueue *Q,char data)
{
  if(Q->length==Q->lengthOfCurrent){
     cout<<"列表已经满了\n";
     cout<<"按#键则输入结束\n";
     return FALSE;
  }
  LinkQueueNode *newNode=(LinkQueueNode*)malloc(sizeof(LinkQueueNode));
  if(newNode==NULL)
    return FALSE;
  newNode->data=data;
  Q->rear->next=newNode;
  Q->rear=newNode;
  Q->rear->next=NULL;
  Q->lengthOfCurrent++;
  return TRUE;
}


//将队首元素进行出队列
int QuitQueue(LinkQueue *Q)
{
  LinkQueueNode *p=(LinkQueueNode*)malloc(sizeof(LinkQueueNode));
  if(Q->front==Q->rear){
     cout<<"队列中无元素!\n";
     return FALSE;
  }
  p=Q->front->next;
  Q->front->next=p->next;
  free(p);Q->lengthOfCurrent--;
  return TRUE;
}

//得到队首元素
char GetQueueHead(LinkQueue *Q)
{
  if(Q->front==Q->rear)
     return FALSE;
  else{
    return Q->front->next->data;
  }
}

int FindIndexOfNode(LinkQueue *Q,char data)
{
  LinkQueueNode *p=Q->front->next;
  if(p->next==NULL){
     cout<<" 队列已经为空\n";
     return FALSE;
  }int current=1;
  while(p!=NULL)
 {
    if(p->data==data)
       return current;
    else
       p=p->next;
    current++;
  }
  return FALSE;
}


//对队列添加元素(元素个数限制为定义的队列长度)
void procInitial()
{
  char data;
  InitialQueue(Q);
  cin>>data;
  while(data!='#')
  {
    EnterQueue(Q,data);
    cin>>data;
  }
}

//输出队列中各元素
void procOutput()
{
  LinkQueueNode *p=(LinkQueueNode*)malloc(sizeof(LinkQueueNode));
  p=Q->front->next;
  while(p!=NULL)
  {
     cout<<p->data<<"\n";
     p=p->next;
  }
  cout<<"当前队列长度为"<<Q->lengthOfCurrent<<"\n\n";
}

int main()
{
  char data;
  procInitial();
  cout<<"输入要查找的元素(0为没有找到,其他正整数为找到元素在队列中的位置)\n";
  cin>>data;
  int flag=FindIndexOfNode(Q,data);
  cout<<"您要查找的元素位置为"<<flag<<"\n";
  cout<<"出队列两次\n";
  QuitQueue(Q);QuitQueue(Q);
  procOutput();
  cout<<"获取队首元素"<<GetQueueHead(Q)<<"\n";
  return 0;
}
 
0
1
分享到:
评论

相关推荐

    c++,链队列的基本操作(创建,销毁,查找,删除,插入等)

    c++,链队列的基本操作(创建,销毁,查找,删除,插入等)

    c++,链队列的基本操作(创建,销毁,查找,删除,插入等).pdf

    c++,链队列的基本操作(创建,销毁,查找,删除,插入等).pdf

    吉林大学软件学院2011数据结构实验题C++实现

    2) 实现二叉查找树的查找、插入和删除等算法; 第三次实验 题目1 邻接表存储的图相关算法的实验验证。 [实验目的] 验证邻接表存的图及其上的基本操作。 [实验内容及要求] 1、 定义邻接表存储的图类。 2、 实验验证...

    单链表,队列,链队,链栈,排序,顺序表,顺序栈算法实现.zip

    里面7个文件夹,分别是单链表,队列,链队,链栈,排序,顺序表,顺序栈。都实现了插入删除查找等操作,c++代码,可以直接运行。

    数据结构实验一.rar

    (3)编写插入函数,从键盘输入待插入元素及插入位置,将完成插入后的顺序表输出; (4)编写删除函数,从键盘输入待删除元素位置,将该位置元素删除后的顺序表输出。 2.有两个有序排序的单链表Ll和L2,分别存放10个...

    华南 数据结构上机实验代码 完整代码

    循环队列的基本操作 栈的应用——进制转换 括号匹配检验 行编辑程序 表达式求值 队列的应用——银行客户平均等待时间 计算next值 KMP算法 二叉树的构建及遍历操作 实现二叉排序树的各种算法(1) 实现二叉...

    数据结构原代码(包括线性表 链表 树性表)

    1、 链队列的建立 2、 入队和出队 3、 循环队列建立 4、 循环队列的入队和出队操作 四、 串及其操作 1、 串的朴素匹配 五、 树(二叉树)及其操作 1、 二叉排序树 2、 哈夫曼编码 六、 排序 1、 冒泡排序 2、 直接...

    数据结构讲义(严蔚敏版)(含算法源码)

    了解队列的实现,链队列和循环队列,注意链队列中的出队列操作 算法: 注意循环队列空和满的条件(A,P) 会运用栈和队列 5. 串 掌握相关概念 会运用串的基本操作(C),特别是Concat(),Substring(),Index()和...

    数据结构算法实现(严蔚敏版配套实现程序)

    1.2.7 链队列的入队、出队 69 范例1-30 链队列入队、出队 69 ∷相关函数:push函数 pop函数 1.2.8 舞伴问题 71 范例1-31 舞伴问题 71 ∷相关函数:EnQueue函数 DeQueue函数 DancePartner函数 1.3 链表 75 1.3.1 头插...

    数据结构算法实现(严蔚敏版配套实现程序)

    1.2.7 链队列的入队、出队 69 范例1-30 链队列入队、出队 69 ∷相关函数:push函数 pop函数 1.2.8 舞伴问题 71 范例1-31 舞伴问题 71 ∷相关函数:EnQueue函数 DeQueue函数 DancePartner函数 1.3 链表 75 1.3.1 头插...

    算法第四版-PDF-网盘链接

     3.2.3 有序性相关的方法与删除操作 257  3.3 平衡查找树 269  3.3.1 2-3查找树 269  3.3.2 红黑二叉查找树 275  3.3.3 实现 280  3.3.4 删除操作 282  3.3.5 红黑树的性质 284

    C++数据抽象和问题求解(第6版).[美]Frank M. Carrano(带详细书签).pdf

    18.4.6 使用散列和分离链实现ADT字典 544 第19章 平衡查找树 551 19.1 平衡查找树 552 19.2 2-3树 553 19.2.1 遍历2-3树 555 19.2.2 查找2-3树 556 19.2.3 在2-3树中插入数据 558 19.2.4 从2-3树中删除数据 ...

    精心整理史上最全的数据结构flash演示动画,共5个版本,祝大家考研成功!

    \数据结构flash演示\版本1\3-3-12-2链队列出队-队列空.swf \数据结构flash演示\版本1\3-3-13循环队列.swf \数据结构flash演示\版本1\3-3-1栈的应用举例-走迷宫-有解.swf \数据结构flash演示\版本1\3-3-2栈的应用...

    数据结构课设

    任务:建立一个微型电子字典,实现生词的加入,单词的查找、删除,修改等操作。 数据结构:键树 9、稀疏矩阵相乘 任务:以三元组形式存储稀疏矩阵,实现矩阵相乘 10、平衡二叉树 任务:平衡二叉树的建立、结点的...

    852数据结构.txt

    (3) 线性表的链式存储方法和实现,相关查找、插入和删除算法算法实现,同时要注意链表中的头结点、头指针和首元结点的区别及循环链表、双向链表的特点。 (4) 从时间和空间复杂度的角度比较两种存储结构的不同特点...

    python数据结构与算法详解与源码

    3-03 队列与双端队列的实现 四、链表 4-01 链表的提出 4-02 单链表的ADT模型 4-03 Python中变量标识的本质 4-04 单链表及结点的定义代码 4-05 单链表的判空、长度、遍历与尾部添加结点的代码实现 4-06 单链表...

    数据结构与算法.xmind

    插入删除元素很快 缺点 存取速度很慢 链表分类 单向链表 一个节点指向下一个节点 双向链表 一个节点有两个指针域 自由主题 循环链表 能通过任何一个节点找到其他...

    计算机二级公共基础知识

    队列是只允许在一端进行删除,在另一端进行插入的顺序表,通常将允许删除的这一端称为队头,允许插入的这一端称为队尾。当表中没有元素时称为空队列。 队列的修改是依照先进先出的原则进行的,因此队列也称为先进先...

Global site tag (gtag.js) - Google Analytics