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. sql 注入安全过滤-安全模块

    <?php /** * 安全模块 * Email:zhangyuan@tieyou.com * 主要针对xss跨站攻击.sql注入等敏感字符串进行过滤 * @author hkshadow */ ...

  2. shell 命令getopts用法

    写shell脚本常见sh test.sh -m 2 -d 3的写法 事例脚本: #!/bin/bash while getopts ":a:b:c:" arg #选项后面的冒号表示 ...

  3. python urllib2/urllib实现

    urllib2和urllib是Python中的两个内置模块,要实现HTTP功能,实现方式是以urllib2为主,urllib为辅 urllib2提供一个基础函数urlopen,通过向指定的url发出请 ...

  4. 通过w3c方式 读取xml内容

    /** * 通过w3c方式 读取xml内容 * @param lablenames 要读取的节点名称 * @param file_path_name 文件绝对路径 * @return */ publi ...

  5. Android输入法的显示与隐藏

    显示输入法: public void ShowSoftInput(View v) { // v 接受输入的控件 mInputMethodManager = (InputMethodManager) ( ...

  6. Hystrix属性配置策略

    Hystrix属性配置 Command可配参数 设置隔离策略 execution.isolation.strategy = THREAD 设置超时时间 execution.isolation.thre ...

  7. Javascript-Switch

    JavaScript Switch 语句 请使用 switch 语句来选择要执行的多个代码块之一. 语法 switch(n) { case 1: 执行代码块 1 break; case 2: 执行代码 ...

  8. Hard模式学编程

    靖难: 我一直推崇一种学习编程的方法,就是learn programming the hard way,我把它翻译为Hard模式学编程 . 我觉得他有以下几个要领: 1. 一开始学习的时候,要尽量去化 ...

  9. myBatis 课纲

    myBatis 课纲 第一章 MyBatis 架构.主要构件及相互关系 使用 MyBatis 构建项目 基本的增删改查映射文件方式(特殊符号处理),使用接口方式实现 结果集映射: 单个对象映射到Has ...

  10. 解决后台无法进入提示DedeCMS Error: (PHP 5.3 and above) Please set 'request_order' ini value

    最近小美眉的网站被盯上了,被添加了非常多的dubo页面,删除了5w多个文件,但还是不停的增加,因为网站权重还可以,很多都被收录了,结果可想而知,ytkah帮她迁移,在迁移网站时遇到了一些问题,后台登录 ...