博客
关于我
Objective-C实现优先队列算法(附完整源码)
阅读量:792 次
发布时间:2023-02-20

本文共 2164 字,大约阅读时间需要 7 分钟。

Objective-C实现优先队列算法

下面是一个简单的Objective-C实现优先队列算法的示例代码:

@import Foundation

@interface PriorityQueueNode : NSObject@property NSInteger value;@property NSInteger priority;@end

@implementation PriorityQueueNode

@implementation PriorityQueue

  • (id)initWithObject:(id)object{self = [super init];if (self) {[self enqueue:object];}return self;}

  • (void)enqueue:(id)object{PriorityQueueNode *node = [[PriorityQueueNode alloc] initWithObject:object];node.priority = [objectPriority]; // 根据具体需求设置优先级[self _enqueue:node];}

  • (id)dequeue{return [self _dequeue];}

  • (void)_enqueue:(PriorityQueueNode *)node{if (self.isEmpty) {[self enqueueNode:node];return;}

    if (node.priority < self.head.priority) {[self enqueueNode:node];return;}

    [self enqueueNode:node];}

  • (void)enqueueNode:(PriorityQueueNode *)node{[self->_nodes insertObject:node atIndex:0];}

  • (id)_dequeue{if (self.isEmpty) {return nil;}

    id resultObject = nil;NSInteger minPriority = INT_MAX;NSInteger index = -1;

    for (int i = 0; i < self->_nodes.count; i++) {PriorityQueueNode *node = [self->_nodes objectAtIndex:i];if (node.priority < minPriority) {minPriority = node.priority;index = i;}}

    if (index != -1) {resultObject = [self->_nodes objectAtIndex:index];[self->_nodes removeObjectAtIndex:index];}

    return resultObject;}

  • (BOOL)isEmpty{return self->_nodes.count == 0;}

  • (void)enqueue:(id)object withPriority:(NSInteger)priority{PriorityQueueNode *node = [[PriorityQueueNode alloc] initWithObject:object];node.priority = priority;[self _enqueue:node];}

  • (void)addElements{[self enqueue:@"A" withPriority:1];[self enqueue:@"B" withPriority:2];[self enqueue:@"C" withPriority:3];[self enqueue:@"D" withPriority:4];}

  • (void)printAllElements{for (id obj in self) {NSLog(@"%@\n", obj);}}

  • (void)printPriorityQueue{NSLog(@"Priority Queue: ");for (int i = 0; i < self->_nodes.count; i++) {PriorityQueueNode *node = [self->_nodes objectAtIndex:i];NSLog(@"Index %d: Value: %@, Priority: %d", i, node.value, node.priority);}NSLog(@"------------------");}

  • (void)removeAllElements{[self->_nodes removeAllObjects];}

  • (void)isEmptyCheck{if (self.isEmpty) {NSLog(@"PriorityQueue is empty");} else {NSLog(@"PriorityQueue is not empty");}}

// 其他相关方法...

转载地址:http://udifk.baihongyu.com/

你可能感兴趣的文章
Objective-C实现MinHeap最小堆算法(附完整源码)
查看>>
Objective-C实现minimum cut最小切割流算法(附完整源码)
查看>>
Objective-C实现minimum partition最小分区算法(附完整源码)
查看>>
Objective-C实现Minimum Vertex Cover最小顶点覆盖算法(附完整源码)
查看>>
Objective-C实现MSRCR算法(附完整源码)
查看>>
Objective-C实现multilayer perceptron classifier多层感知器分类器算法(附完整源码)
查看>>
Objective-C实现multiplesThreeAndFive三或五倍数的算法 (附完整源码)
查看>>
Objective-C实现n body simulationn体模拟算法(附完整源码)
查看>>
Objective-C实现naive string search字符串搜索算法(附完整源码)
查看>>
Objective-C实现natural sort自然排序算法(附完整源码)
查看>>
Objective-C实现nested brackets嵌套括号算法(附完整源码)
查看>>
Objective-C实现nevilles method多项式插值算法(附完整源码)
查看>>
Objective-C实现newtons second law of motion牛顿第二运动定律算法(附完整源码)
查看>>
Objective-C实现newton_forward_interpolation牛顿前插算法(附完整源码)
查看>>
Objective-C实现newton_raphson牛顿拉夫森算法(附完整源码)
查看>>
Objective-C实现NLP中文分词(附完整源码)
查看>>
Objective-C实现NLP中文分词(附完整源码)
查看>>
Objective-C实现NMS非极大值抑制(附完整源码)
查看>>
Objective-C实现not gate非门算法(附完整源码)
查看>>
Objective-C实现number of digits解字符数算法(附完整源码)
查看>>