OC_链表实现队列
- @interface Node : NSObject
- @property(nonatomic,strong)NSString *value;
- @property(nonatomic,strong)Node *next;
Queue的头文件内容:
- #import <Foundation/Foundation.h>
- @class Node;
- @interface Queue : NSObject
- @property (strong,nonatomic) Node *first;
- @property (strong,nonatomic) Node *last;
- @property (assign,nonatomic) NSInteger count;
- -(BOOL)isEmpty;
- -(NSInteger)size;
- -(void)enqueue:(NSString *)value;
- -(NSString *)dequeue;
- -(void)remove:(NSString *)value;
- @end
- Queue的实现内容:
- #import "Queue.h"
- #import "Node.h"
- @implementation Queue
- -(BOOL)isEmpty{
- return self.count==0;
- }
- -(NSInteger)size{
- return self.count;
- }
- -(void)enqueue:(NSString *)value{
- Node *oldLast=self.last;
- self.last=[[Node alloc]init];
- self.last.data=value;
- self.last.next=NULL;
- oldLast.next=self.last;
- if ([self isEmpty]) {
- self.first=self.last;
- }else{
- oldLast.next=self.last;
- }
- self.count=self.count+1;
- }
- -(NSString *)dequeue{
- if ([self isEmpty]) {
- return [NSString stringWithFormat:@"-1"];
- }
- NSString *result=self.first.data;
- self.first=self.first.next;
- self.count=self.count-1;
- return result;
- }
- -(void)remove:(NSString *)value{
- //判断是不是头部节点
- if ([self.first.data isEqualToString:value]) {
- self.first=self.first.next;
- self.count=self.count-1;
- }else
- {
- Node *node=self.first;
- while (node!=NULL)
- {
- if ([node.next.data isEqualToString:value])
- {
- node.next=node.next.next;
- self.count=self.count-1;
- break;
- }
- node=node.next;
- }
- }
- }
- @end
OC_链表实现队列的更多相关文章
- Java数据结构——用双端链表实现队列
//================================================= // File Name : LinkQueue_demo //---------------- ...
- 教你如何使用Java手写一个基于链表的队列
在上一篇博客[教你如何使用Java手写一个基于数组的队列]中已经介绍了队列,以及Java语言中对队列的实现,对队列不是很了解的可以我上一篇文章.那么,现在就直接进入主题吧. 这篇博客主要讲解的是如何使 ...
- 利用 C++ 单向链表实现队列
利用C++ 单向链表实现数据结构队列,其实和上一篇基本内容相同,仅仅是插入的时候在链表的尾部插入,取元素都是一样的,都从头部取. #pragma once #include "stdio.h ...
- chapter11_2 Lua链表与队列
链表 由于table是动态的实体,所以在Lua中实现链表是很方便的.每个节点以一个table来表示,一个“链表”只是节点table中的一个字段. 该字段包含了对其他table的引用.例如,要实现一个基 ...
- 队列queue(2):链表实现队列
基本概念 队列是只允许在一端进行插入操作,另一端进行删除操作的线性表. 我们规定,允许删除的叫做队首"head",允许插入的叫做队尾"tail". 基本操作 我 ...
- Java之使用链表实现队列
import java.util.Iterator; import java.util.NoSuchElementException; /** * 使用链表来实现队列 * 1.考虑结点的结构,包括当前 ...
- 并发编程-concurrent指南-阻塞队列-链表阻塞队列LinkedBlockingQueue
LinkedBlockingQueue是一个基于链表的阻塞队列. 由于LinkedBlockingQueue实现是线程安全的,实现了先进先出等特性,是作为生产者消费者的首选. LinkedBlocki ...
- 使用python实现数组、链表、队列、栈
引言 什么是数据结构? 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成. 简单来说,数据结构就是设计数据以何种方式组织并存储在计算机中. 比如:列表,集合和字 ...
- 链表实现队列(python)
# -*- coding: utf-8 -*- from collections import deque class Node(object): def __init__(self, value=N ...
随机推荐
- DOM4J操作XML(包括封装和解析)
DOM4J操作XML(包括封装和解析) 先来看看dom4j中相应XML的DOM树建立的继承关系 针对于XML标准定义.相应于图2-1列出的内容,dom4j提供了下面实现: 以下给出一个详细事例: pa ...
- SEO前端需要注意的地方
1 合理的title ,description ,keyswords 搜索引擎对这三项的权重逐渐减小,title 强调重点即可,重要的关键字不要超过两次,而且要靠前. 2 不同的tilte要有所不同, ...
- Error:“const char*”类型的实参与“wchar_t”类型的形参不兼容
MainApp\RPolarView.cpp(1571): error C2664: “ATL::CStringT<BaseType,StringTraits>::ReverseFind” ...
- html中div获取焦点,去掉input div等获取焦点时候的边框
经测试只有在IE chrome才会在获取焦点时有边框 使用CSS div{ outline:none; } DIV焦点事件详解 --[focus和tabIndex] 摘自:http://my.osc ...
- linux 下 Shell编程(三)
if语句应用实例 if语句可以在程序中实现各种逻辑判断. 用if语句判断并显示文件的信息 可以用test命令和相关的参数来判断文件的属性,然后根据判断结果输出文件的信息. #!/bin/bash #4 ...
- python cPickle和pickle 序列化
在Python中提供了两个模块:cPickle和pickle来实现序列化,前者是由C语言编写的,效率比后者高很多,一般编写程序的时候,采取的方案是先导入cPickle模块,如果此模块不存在,再导入pi ...
- Android无线测试之—UiAutomator UiDevice API介绍一
UiDevice 类介绍 1.UiDevice 代表设备状态 2.UiDevice 为单例模式 获取UiDevice实例的方式: 1) UiDevice.getInstance() 2) getUiD ...
- iOS 数组的去重(普通的无序的去重和排序好的去重)
本文转载至 http://blog.csdn.net/zhaopenghhhhhh/article/details/24972645 有时需要将NSArray中去除重复的元素,而存在NSArray中的 ...
- staitc_cast,const_cast....
#include <iostream> using namespace std; int main() { //1.const_cast //const int a = 10; //int ...
- 1020 逆序排列(DP)
1020 逆序排列 基准时间限制:2 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序 ...