1. @interface Node : NSObject
  2. @property(nonatomic,strong)NSString *value;
  3. @property(nonatomic,strong)Node *next;

Queue的头文件内容:

  1. #import <Foundation/Foundation.h>
  2. @class Node;
  3. @interface Queue : NSObject
  4. @property  (strong,nonatomic) Node  *first;
  5. @property  (strong,nonatomic)  Node  *last;
  6. @property  (assign,nonatomic) NSInteger  count;
  7. -(BOOL)isEmpty;
  8. -(NSInteger)size;
  9. -(void)enqueue:(NSString *)value;
  10. -(NSString *)dequeue;
  11. -(void)remove:(NSString *)value;
  12. @end
  13. Queue的实现内容:
  14. #import "Queue.h"
  15. #import "Node.h"
  16. @implementation Queue
  17. -(BOOL)isEmpty{
  18. return self.count==0;
  19. }
  20. -(NSInteger)size{
  21. return self.count;
  22. }
  23. -(void)enqueue:(NSString *)value{
  24. Node  *oldLast=self.last;
  25. self.last=[[Node alloc]init];
  26. self.last.data=value;
  27. self.last.next=NULL;
  28. oldLast.next=self.last;
  29. if ([self isEmpty]) {
  30. self.first=self.last;
  31. }else{
  32. oldLast.next=self.last;
  33. }
  34. self.count=self.count+1;
  35. }
  36. -(NSString *)dequeue{
  37. if ([self isEmpty]) {
  38. return [NSString stringWithFormat:@"-1"];
  39. }
  40. NSString  *result=self.first.data;
  41. self.first=self.first.next;
  42. self.count=self.count-1;
  43. return result;
  44. }
  45. -(void)remove:(NSString *)value{
  46. //判断是不是头部节点
  47. if ([self.first.data isEqualToString:value]) {
  48. self.first=self.first.next;
  49. self.count=self.count-1;
  50. }else
  51. {
  52. Node  *node=self.first;
  53. while (node!=NULL)
  54. {
  55. if ([node.next.data isEqualToString:value])
  56. {
  57. node.next=node.next.next;
  58. self.count=self.count-1;
  59. break;
  60. }
  61. node=node.next;
  62. }
  63. }
  64. }
  65. @end

OC_链表实现队列的更多相关文章

  1. Java数据结构——用双端链表实现队列

    //================================================= // File Name : LinkQueue_demo //---------------- ...

  2. 教你如何使用Java手写一个基于链表的队列

    在上一篇博客[教你如何使用Java手写一个基于数组的队列]中已经介绍了队列,以及Java语言中对队列的实现,对队列不是很了解的可以我上一篇文章.那么,现在就直接进入主题吧. 这篇博客主要讲解的是如何使 ...

  3. 利用 C++ 单向链表实现队列

    利用C++ 单向链表实现数据结构队列,其实和上一篇基本内容相同,仅仅是插入的时候在链表的尾部插入,取元素都是一样的,都从头部取. #pragma once #include "stdio.h ...

  4. chapter11_2 Lua链表与队列

    链表 由于table是动态的实体,所以在Lua中实现链表是很方便的.每个节点以一个table来表示,一个“链表”只是节点table中的一个字段. 该字段包含了对其他table的引用.例如,要实现一个基 ...

  5. 队列queue(2):链表实现队列

    基本概念 队列是只允许在一端进行插入操作,另一端进行删除操作的线性表. 我们规定,允许删除的叫做队首"head",允许插入的叫做队尾"tail". 基本操作 我 ...

  6. Java之使用链表实现队列

    import java.util.Iterator; import java.util.NoSuchElementException; /** * 使用链表来实现队列 * 1.考虑结点的结构,包括当前 ...

  7. 并发编程-concurrent指南-阻塞队列-链表阻塞队列LinkedBlockingQueue

    LinkedBlockingQueue是一个基于链表的阻塞队列. 由于LinkedBlockingQueue实现是线程安全的,实现了先进先出等特性,是作为生产者消费者的首选. LinkedBlocki ...

  8. 使用python实现数组、链表、队列、栈

    引言 什么是数据结构? 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成. 简单来说,数据结构就是设计数据以何种方式组织并存储在计算机中. 比如:列表,集合和字 ...

  9. 链表实现队列(python)

    # -*- coding: utf-8 -*- from collections import deque class Node(object): def __init__(self, value=N ...

随机推荐

  1. ios -过滤字符串特殊字符

    //过滤 " [ ] " + (NSString *)onTwoCommseparatedWithString:(NSString *)string { //过滤 " [ ...

  2. Android OpenCV集成摄像头图片动态识别车牌号

    最近两天开发一个使用OpenCV集成的一个识别车牌号的项目,困难重重,总结一下相关经验,以及开发注意事项: 一.开发环境: Android Studio 个人版本 3.1.4 NDK下载:14b CM ...

  3. 复制对象(一)copy和mutableCopy方法

    本文转载至 http://www.tuicool.com/articles/Fn6rMn CSDN博客原文  http://blog.csdn.net/u010962810/article/detai ...

  4. python学习【第二篇】初识python

    python的安装 windows 1.下载安装包 https://www.python.org/downloads/ 2.安装 默认安装路径:C:\python27 3.配置环境变量 [右键计算机] ...

  5. css单行排版

    text-overflow: ellipsis; overflow: hidden; white-space: nowrap;

  6. JavaScript基础深入之

    JS的数值类型是分为两类:基本数据类型和引用数据类型. 基本类型占据的内存栈空间,引用类型被保存在堆空间.引用类型赋值的变量也是被保存在栈空间的,它的作用类似于电视遥控器,负责操作堆空间内指向的对象. ...

  7. php自定义函数: 改进升级版curl

    <?php function dcurl($url, $method = 'GET', $postFields = null, $header = null) { $ch = curl_init ...

  8. Java基础知识大全

    本文引用于: http://uule.iteye.com/blog/762949 /; DecimalFormat df = new DecimalFormat("0.00");/ ...

  9. Oracle中索引名称的唯一性

    数据库索引处理是遇到的一点问题,简单记录下 oracle的规定,在同一个SCHEMA下的对象是不能用相同的名字命名的,一般创建索引名用“表名_字段名”,这样能很快知道这个索引,是属于哪个表的. col ...

  10. LINUX 文件/组/帮助/权限/文件压缩/管道

    Linux文件/目录详解 常用文件路径的作用 /var/log/messages 系统类的日志文件 /var/log/secure 登录日志文件 /var/spool/cron 定时任务目录 /etc ...