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
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 百万级群聊的设计实践
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期