本文共 1057 字,大约阅读时间需要 3 分钟。
Objective-C实现单向链表的反转
以下是Objective-C中实现单向链表反转的完整代码示例:
#import <Foundation/Foundation.h>
@interface Node : NSObject@property (nonatomic, strong) id data;@property (nonatomic, strong) Node *next;@end
@implementation Node
// Node类的初始化方法-(id)initWithData:(id)data {self = [Node new];self.data = data;self.next = nil;return self;}
// 反转链表的方法-(Node * )reverseLinkList {Node * originalHead = self;Node * reversedHead = nil;Node * current = self;
while (current != nil) { // 记录当前节点的下一个节点 Node * nextNode = current.next; // 将当前节点的下一个节点反转到前面 if (reversedHead == nil) { // 当前节点是链表的最后一个节点,直接将其连接到反转后的链表 reversedHead = [Node initWithData:current.data]; reversedHead.next = nil; } else { // 创建一个新的节点,存储当前节点的数据 Node * newNode = [Node initWithData:current.data]; newNode.next = reversedHead; reversedHead = newNode; } // 更新当前节点为下一个节点 current = nextNode;}return reversedHead; }
@end
以上代码实现了单向链表的反转逻辑。通过递归或迭代的方式,可以将链表从尾到头遍历,并将节点依次连接到反转链表的前面。这种方法时间复杂度为O(n),空间复杂度为O(1)。
转载地址:http://vnifk.baihongyu.com/