iOS
来源:互联网 发布:中国等级观念知乎 编辑:程序博客网 时间:2024/06/05 04:12
具体代码 : https://github.com/coderMyy/MYDictionary
OC :
#import <Foundation/Foundation.h>@interface MYLinkedArray : NSObject@property (assign , nonatomic) NSUInteger size; //数组长度- (void)addObject:(NSObject *)obj; //添加元素- (void)remove:(NSObject *)obj; //移除指定元素- (void)removeAtIndex:(NSInteger)index; //移除指定索引元素+ (instancetype)array; //数组初始化@end@interface Node : NSObject@property (strong , nonatomic) Node *previous; //上个节点@property (strong , nonatomic) Node *next; //下个节点@property (strong , nonatomic) NSObject *content; //当前节点内容@end
#import "MYLinkedArray.h"@interface MYLinkedArray ()@property (nonatomic, strong) Node *first; //首个节点@property (nonatomic, strong) Node *last; //最后节点 @end@implementation MYLinkedArray//添加元素- (void)addObject:(NSObject *)obj{ _size ++ ; Node *node = [[Node alloc]init]; //首个节点为空 if (!_first) { _first = node; _last = node; node.previous = nil; node.next = nil; node.content = obj; return; } //数组中有值 node.previous = _last; node.next = nil; node.content = obj; _last = node; _last.next = node;}//移除元素- (void)remove:(NSObject *)obj{ if (!obj||!_size) return; Node *tmpNode = _first; for (NSInteger index = 0; index < _size; index ++) { if ([tmpNode.content isEqual:obj]) { [self removeNode:tmpNode]; //移除节点 break; } }}//根据索引移除元素- (void)removeAtIndex:(NSInteger)index{ if (index<0||index>=_size) return; Node *tmpNode = _first; for (NSInteger i = 0; i < _size; i ++) { if (i == index) { [self removeNode:tmpNode]; //移除节点 break; } tmpNode = tmpNode.next; }}//私有- (void)removeNode:(Node *)node{ //连接上下节点 Node *preNode = node.previous; Node *nextNode = node.next; preNode.next = nextNode; nextNode.previous = preNode; node.content = nil; //清空被移除节点内容 _size -- ;//长度更新}//初始化+ (instancetype)array{ return [[self alloc]init];}@end//Node@implementation Node@end
java :
package com.jyall.collection; public class MYLinkedList { private Node first ; //第一个节点 private Node last ; //最后一个节点 private int size ; //数组大小 public void add(Object obj) { Node node = new Node();//初始化节点 node.setSelfObj(obj); //赋值 size ++ ; //长度+1 if (first == null) { //第一个节点为空,链表里没有任何内容 first = node; last = node; first.setPrevious(null);//上个节点为空 first.setNext(null); //下个节点为空 return; } //之后的节点 last.setNext(node); //当前最后一个节点的下一个 node.setPrevious(last);//新节点的上一个 last = node; //更新最后一个节点 node.setNext(null); } //长度 public int size() { return size; } //获取index对应的值 public Object get(int index) { Node tmpNode = first; if (first != null) { //逐个遍历获取对应的值 for (int i = 0; i < index; i++) { tmpNode = tmpNode.getNext(); } } return tmpNode.getSelfObj(); } //remove public void remove(Object obj) { Node tmp = first; for (int i = 0; i < size; i++) { if (tmp.getSelfObj().equals(obj)){ //连接上下节点 Node previous = (Node)tmp.getPrevious(); Node next = (Node)tmp.getNext(); previous.setNext(next); next.setPrevious(previous); tmp.setSelfObj(null); //清空被移除节点内容 size -- ; break; }; tmp = (Node)tmp.getNext(); } } public static void main(String[] args) { MYLinkedList list = new MYLinkedList(); list.add("123"); list.add("456"); System.out.println(list); System.out.println(list.size); }}//节点class Node{ private Node previous; //上个节点 private Node next; //下个节点 private Object selfObj; //当前节点内容 public Node getPrevious() { return previous; } public void setPrevious(Node previous) { this.previous = previous; } public Node getNext() { return next; } public void setNext(Node next) { this.next = next; } public Object getSelfObj() { return selfObj; } public void setSelfObj(Object selfObj) { this.selfObj = selfObj; }}
0 0
- iOS
- iOS
- IOS
- iOS
- iOS
- IOS
- ios
- iOS
- iOS
- IOS
- iOS
- ios
- ios ~~~~~
- ios
- IOS
- IOS
- IOS
- ios
- 终极 Shell on-zshrc
- 常见的排序算法实现
- scrapy.Selector的使用探索
- 如何在awk中使用正则表达式
- 软件开发模型之瀑布模型
- iOS
- 我的java学习路之编写第一个程序
- phpstorm version 2016.2 License Server激活
- [摘抄-Java-学习中]Java 图片叠加水印&文字自动换行
- Android 中java反射应用(二)——应用篇
- EasyUI DataGrid中URL中文乱码的解决办法
- C#的异步编程模式
- ListView实现隐藏,显示Item的部分View.以及部分问题
- 微信公众号开发(一)——开发模式接入,消息的接收与响应