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. Word常用操作笔记

    总忘,在这记一下,以下以WPS为例,WORD大同小异,别看网上那些乱写的,就哥这个稳定好使: 1. 在指定页面及其后开始插入页码 2. 修改页码中的总页数 -> 选中总页数的域 -> SH ...

  2. node.js 入门

    什么是Node.js?还服务器端javascript?对于这个概念我在这篇文章不做解释,可以自己去搜索了解下,服务器端js不是新技术,只是最近的node.js的火爆让他爆发了,我会在以后的文章里解释什 ...

  3. WPF数据模板样式选择器

    在使用数据模板样式选择器时,不能设置ItemContainerStyle的属性值,如果设置了该值,那么数据模板样式选择器会失去作用. 在使用数据模板样式选择器时,首先要创建数据模板样式选择器对象,此对 ...

  4. 视觉SLAM之词袋(bag of words) 模型与K-means聚类算法浅析(2)

    聚类概念: 聚类:简单地说就是把相似的东西分到一组.同 Classification (分类)不同,分类应属于监督学习.而在聚类的时候,我们并不关心某一类是什么,我们需要实现的目标只是把相似的东西聚到 ...

  5. 《从零开始学Swift》学习笔记(Day43)——构造函数继承

    原创文章,欢迎转载.转载请注明:关东升的博客 Swift中的子类构造函数的来源有两种:自己编写和从父类继承.并不是父类的所有的构造函数都能继承下来,能够从父类继承下来的构造函数是有条件的,如下所示. ...

  6. 自定义表单验证--jquery validator addMethod的使用

    原文地址:jquery validator addMethod 方法的使用作者:蜡笔小玄 jQuery.validate是一款非常不错的表单验证工具,简单易上手,而且能达到很好的体验效果,虽然说在项目 ...

  7. spring和hibernate整合时设置自动生成数据库的表

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFa ...

  8. MySQL权限系统(一).The MySQL Access Privilege System 概述

    纯属个人阅读,如有翻译错误,请指出 The primary function of the MySQL privilege system is to authenticate a user who c ...

  9. Django中_Meta 部分用法

    周一了,就不长篇大论了,给大家分享一个很实用的知识点,希望大家周末过得开心,愉快,诗和远方在等着你们.而我还在苦逼的撸代码,只为了应付眼前的苟且! model.UserInfo._meta.app_l ...

  10. git原理:.git隐藏文件夹介绍

    config 定义项目特有的配置选项description 仅供git web程序使用info/ 包含一个全局排除文件(exclude文件),用于配置不在.gitignore中的忽略模式hooks/ ...