рдПрдХ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА рдХреЛ рдлреИрд▓рд╛рдПрдВред рд╕реНрд╡рд┐рдлреНрдЯ рд╕рдВрд╕реНрдХрд░рдг

рдпрд╣ рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдкрд╕рдВрджреАрджрд╛ рдЕрддреАрдд рдореЗрдВ рд╕реЗ рдПрдХ рдирд┐рдпреЛрдХреНрддрд╛рдУрдВ рдХрд╛ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИред рд╣рдо рд╕рднреА рд╕рдордп-рд╕рдордп рдкрд░ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ - рдиреМрдХрд░реА рдХреА рдЦреЛрдЬ - рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рд╕рдмрд╕реЗ рдЖрдо рдирд╣реАрдВ рд╣реИред рдПрдХ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рдЯ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ, рднреВрд▓ рдЧрдП рдореВрд▓ рдмрд╛рддреЗрдВ рджреЛрд╣рд░рд╛рдПрдВ рдФрд░ рдХреБрдЫ рдирдпрд╛ рд╕реАрдЦреЗрдВред рдФрд░ рд╕рдлрд▓ рд╣реЛрдиреЗ рдкрд░ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рднреА рдмрдврд╝рд╛рдПрдВред рд╣рдо рдКрдм рдЧрдП рд╣реИрдВ, рд╣рдордиреЗ рдЕрдкрдиреЗ рдЖрдк рдХреЛ "рд▓рд┐рдВрдХреНрдбрдЗрди" рдЬреИрд╕реЗ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдХреЗ "рд╡реНрдпрд╛рдкрд╛рд░" рд╕рд╛рдорд╛рдЬрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ "рдСрдлрд╝рд░ рдХреА рдЦреБрд▓реА" рдХреА рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рд╣реИ - рдФрд░ рдорд╛рдирд╡ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХреА рд╕реЗрдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдЗрдирдмреЙрдХреНрд╕ рдкрд░ рд╣рдорд▓рд╛ рдХрд░ рд░рд╣реА рд╣реИред

рдЫрд╡рд┐

рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдЬрдмрдХрд┐ рдпрд╣ рд╕рдм рдмреЗрдбрд▓реИрдо рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рд╣рдореЗрдВ рдХрдИ рд╕рд╡рд╛рд▓реЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдврд╣ рдЧрдП рдкрд░реНрджреЗ рдХреЗ рджреВрд╕рд░реА рддрд░рдл рдХрд╣рддреЗ рд╣реИрдВ, "рд░рд┐рдВрдЧ рдЕ рдмреЗрд▓" рд╣реИрдВ, рдФрд░ рдЙрдирдХрд╛ рд╡рд┐рд╡рд░рдг рдпреБрджреНрдз рдХреЗ рдХреЛрд╣рд░реЗ рдХреЗ рдкреАрдЫреЗ рдЫрд┐рдкрд╛ рд╣реИред рдЙрдиреНрд╣реЗрдВ рдЕрдХреНрд╕рд░ рдХреЗрд╡рд▓ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдФрд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдкрд░ рдпрд╛рдж рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореЗрд░реЗ рдкрд╛рд╕ рдРрд╕рд╛ рдХреЛрдИ рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реИ) рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ред

рдХрд┐рд╕реА рднреА рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛ рдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдореЗрдВ рд╕рдмрд╕реЗ рдЖрдо рд╕рд╡рд╛рд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╕реВрдЪреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХрд▓ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪрд┐рдпрд╛рдБред рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдмреБрдирд┐рдпрд╛рджреА рдПрд▓реНрдЧреЛрд░рд┐рджрдоред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдпреВ-рдЯрд░реНрдиред рдФрд░ рдЖрдорддреМрд░ рдкрд░ рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╣реЛрддрд╛ рд╣реИ: "рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдПрдХ рдПрдХрд▓ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХреИрд╕реЗ рдХрд░реЗрдВрдЧреЗ?" рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рд╡рд╛рд▓ рд╕реЗ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рд╣реЛрдХрд░ рдЖрд╡реЗрджрдХ рдХреЛ рдкрдХрдбрд╝рд╛ рдЬрд╛рдПред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рд╕рдмрдиреЗ рдореБрдЭреЗ рдирд┐рд░рдВрддрд░ рдЕрдиреБрд╕реНрдорд╛рд░рдХ рдФрд░ рд╕рдВрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рдореАрдХреНрд╖рд╛ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ред рддреЛ, рдПрдХ рддрд░рдл рдордЬрд╛рдХ рдХрд░рддрд╛ рд╣реИ, рдирд┐рд╣рд╛рд░рдирд╛!

рдПрдХрд▓ рд░реВрдк рд╕реЗ рдЬреБрдбрд╝реА рд╣реБрдИ рд╕реВрдЪреА


рдПрдХ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА рдмреБрдирд┐рдпрд╛рджреА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ ред рдЗрд╕рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ (рдпрд╛ рдиреЛрдб), рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдВрдЧреНрд░рд╣реАрдд рдбреЗрдЯрд╛ рдФрд░ рдкрдбрд╝реЛрд╕реА рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдВрдХ рд╣реЛрддреЗ рд╣реИрдВред рдПрдХ рдПрдХрд▓ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА рдХреЗрд╡рд▓ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдЕрдЧрд▓реЗ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреА рд╣реИ, рдФрд░ рдПрдХ рджреЛрдЧреБрдиреА рд▓рд┐рдВрдХ рд╡рд╛рд▓реА рд╕реВрдЪреА рдЕрдЧрд▓реЗ рдФрд░ рдкрд┐рдЫрд▓реЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рд░рдЦрддреА рд╣реИред рдбреЗрдЯрд╛ рдХрд╛ рдРрд╕рд╛ рд╕рдВрдЧрдарди рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рднреА рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрдХ рд╕рд░рдгреА , рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ рдореЗрдореЛрд░реА рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)ред

рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдмрд╣реБрдд рдХреБрдЫ рд╣реИ, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ: рд╡реЗ рдкрд░рд┐рдкрддреНрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рдпрд╛рдиреА, рдЕрдВрддрд┐рдо рддрддреНрд╡ рдкрд╣рд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ) рдпрд╛ рдирд╣реАрдВ (рдпрд╛рдиреА рдЕрдВрддрд┐рдо рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд▓рд┐рдВрдХ рдирд╣реАрдВ рд╣реИ)ред рд╕реВрдЪреА рдЯрд╛рдЗрдк рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдЕрд░реНрдерд╛рдд рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рд╡рдЧреИрд░рд╣ рд╡рдЧреИрд░рд╣ред

рдХреБрдЫ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХрд╛ рдмреЗрд╣рддрд░ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рддрд░рд╣ рдЖрдк рдПрдХ рд╕реВрдЪреА рдиреЛрдб рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

final class Node<T> { let payload: T var nextNode: Node? init(payload: T, nextNode: Node? = nil) { self.payload = payload self.nextNode = nextNode } } 

"рдЬреЗрдиреЗрд░рд┐рдХ" рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реИ рдЬреЛ payload рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреЗрд▓реЛрдб рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред

рд╕реВрдЪреА рдХреЛ рдкрд╣рд▓реЗ рдиреЛрдб рджреНрд╡рд╛рд░рд╛ рдЕрдкрдиреЗ рдЖрдк рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ:

 final class SinglyLinkedList<T> { var firstNode: Node<T>? init(firstNode: Node<T>? = nil) { self.firstNode = firstNode } } 

рдкрд╣рд▓рд╛ рдиреЛрдб рд╡реИрдХрд▓реНрдкрд┐рдХ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕реВрдЪреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЦрд╛рд▓реА рд╣реЛ рд╕рдХрддреА рд╣реИред

рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдХрдХреНрд╖рд╛ рдореЗрдВ рдЖрдкрдХреЛ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ - рд╕рдореНрдорд┐рд▓рди, рд╡рд┐рд▓реЛрдкрди, рдиреЛрдбреНрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдЖрджрд┐, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕реЗ рдХреБрдЫ рдФрд░ рд╕рдордп рдХрд░реЗрдВрдЧреЗред рдЙрд╕реА рд╕рдордп, рд╣рдо рдпрд╣ рдЬрд╛рдВрдЪ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ struct рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ (рдЬреЛ рдХрд┐ Apple рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рд╣рдореЗрдВ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реИ) рдПрдХ рдмреЗрд╣рддрд░ рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдФрд░ рд╢рд╛рдпрдж "рдХреЙрдкреА-рдСрди-рд░рд╛рдЗрдЯ" рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВред

рдПрдХрд▓-рд▓рд┐рдВрдХ рд╕реВрдЪреА рдлреИрд▓реА рд╣реБрдИ рд╣реИ


рдкрд╣рд▓рд╛ рддрд░реАрдХрд╛ред рдЪрдХреНрд░


рдЖрдЬ рд╣рдо рдпрд╣рд╛рдБ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рд╕рд╛рдп рдореЗрдВ рдЙрддрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИ! рдФрд░ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдкреНрд░рднрд╛рд╡реА рддрд░реАрдХрд╛ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВред рдкрд╣рд▓рд╛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд▓реВрдк рд╣реИ, рдкрд╣рд▓реА рд╕реЗ рдЖрдЦрд┐рд░реА рдиреЛрдб рддрдХред

рдЪрдХреНрд░ рддреАрди рдЪрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╢реБрд░реБрдЖрдд рд╕реЗ рдкрд╣рд▓реЗ рдкрд┐рдЫрд▓реЗ, рд╡рд░реНрддрдорд╛рди рдФрд░ рдЕрдЧрд▓реЗ рдиреЛрдб рдХреЗ рдореВрд▓реНрдп рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред (рдЗрд╕ рд╕рдордп, рдкрд┐рдЫрд▓реЗ рдиреЛрдб рдХрд╛ рдорд╛рди рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЦрд╛рд▓реА рд╣реИред) рдЪрдХреНрд░ рдХреА рдЬрд╛рдБрдЪ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ рдХрд┐ рдЕрдЧрд▓рд╛ рдиреЛрдб рдЦрд╛рд▓реА рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдЪрдХреНрд░ рдХреЗ рд╢рд░реАрд░ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реВрдк рдореЗрдВ рдХреЛрдИ рдЬрд╛рджреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ: рд╡рд░реНрддрдорд╛рди рдиреЛрдб рдкрд░, рдЕрдЧрд▓реЗ рддрддреНрд╡ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдлрд╝реАрд▓реНрдб рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИ (рдкрд╣рд▓реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░, рдХреНрд░рдорд╢рдГ рд▓рд┐рдВрдХ рдХрд╛ рдореВрд▓реНрдп, рд░реАрд╕реЗрдЯ рд╣реИ, рдЬреЛ рдкрд┐рдЫрд▓реЗ рдиреЛрдб рдореЗрдВ рдорд╛рдорд▓реЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ)ред рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдФрд░ рдкрд┐рдЫрд▓реЗ, рд╡рд░реНрддрдорд╛рди рдФрд░ рдЕрдЧрд▓реЗ рдиреЛрдб рдХреЗ рдЕрдиреБрд░реВрдк рдЪрд░ рдирдП рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред рд▓реВрдк рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рд╡рд░реНрддрдорд╛рди (рдпрд╛рдиреА, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЕрдВрддрд┐рдо рдЪрд▓рдиреЗ рдпреЛрдЧреНрдп) рдиреЛрдб рдХреЛ рдЕрдЧрд▓реЗ рдиреЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рд▓рд┐рдВрдХ рдорд╛рди рд╕реМрдВрдкрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд▓реВрдк рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдирд╛ рдЙрд╕ рд╕рдордп рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╕реВрдЪреА рдореЗрдВ рдЕрдВрддрд┐рдо рдиреЛрдб рдЪрд╛рд▓реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрд╣ рд╕рдм рдЕрдЬреАрдм рдФрд░ рд╕рдордЭ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмреЗрд╣рддрд░ рдХреЛрдб рджреЗрдЦреЗрдВ:

 extension SinglyLinkedList { func reverse() { var previousNode: Node<T>? = nil var currentNode = firstNode var nextNode = firstNode?.nextNode while nextNode != nil { currentNode?.nextNode = previousNode previousNode = currentNode currentNode = nextNode nextNode = currentNode?.nextNode } currentNode?.nextNode = previousNode firstNode = currentNode } } 

рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрди рдиреЛрдбреНрд╕ рдХреА рдПрдХ рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдкреЗрд▓реЛрдб рд╕рд░рд▓ рдкреВрд░реНрдгрд╛рдВрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИрдВред рджрд╕ рддрддреНрд╡реЛрдВ рдХреА рд╕реВрдЪреА рдмрдирд╛рдПрдБ:

 let node = Node(payload: 0) // T == Int let list = SinglyLinkedList(firstNode: node) var currentNode = node var nextNode: Node<Int> for id in 1..<10 { nextNode = Node(payload: id) currentNode.nextNode = nextNode currentNode = nextNode } 

рд╕рдм рдХреБрдЫ рдареАрдХ рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдФрд░ рдореИрдВ рд▓реЛрдЧ рд╣реИрдВ, рдХрдВрдкреНрдпреВрдЯрд░ рдирд╣реАрдВ, рдФрд░ рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдмрдирд╛рдИ рдЧрдИ рд╕реВрдЪреА рдХреА рд╢реБрджреНрдзрддрд╛ рдФрд░ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдПрдХ рджреГрд╢реНрдп рдкреНрд░рдорд╛рдг рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рд╢рд╛рдпрдж рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреНрд░рд┐рдВрдЯ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ред рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдкрдардиреАрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреВрд░реНрдгрд╛рдВрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдиреЛрдб рдореЗрдВ CustomStringConvertible рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬреЛрдбрд╝реЗрдВ:

 extension Node: CustomStringConvertible where T == Int { var description: String { let firstPart = """ Node \(Unmanaged.passUnretained(self).toOpaque()) has id \(payload) and """ if let nextNode = nextNode { return firstPart + " next node \(nextNode.payload)." } else { return firstPart + " no next node." } } } 

... рдФрд░ рдХреНрд░рдо рдореЗрдВ рд╕рднреА рдиреЛрдбреНрд╕ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд рд╕реВрдЪреА:

 extension SinglyLinkedList: CustomStringConvertible where T == Int { var description: String { var description = """ List \(Unmanaged.passUnretained(self).toOpaque()) """ if firstNode != nil { description += " has nodes:\n" var node = firstNode while node != nil { description += (node!.description + "\n") node = node!.nextNode } return description } else { return description + " has no nodes." } } } 

рд╣рдорд╛рд░реЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рдореЗрдореЛрд░реА рдореЗрдВ рдПрдХ рдкрддрд╛ рдФрд░ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реЛрдЧрд╛ред рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рджрд╕ рдиреЛрдбреНрд╕ рдХреА рдЙрддреНрдкрдиреНрди рд╕реВрдЪреА рдХреЗ рдореБрджреНрд░рдг рдХрд╛ рдЖрдпреЛрдЬрди рдХрд░рддреЗ рд╣реИрдВ:

 print(String(describing: list)) /* List 0x00006000012e1a60 has nodes: Node 0x00006000012e2380 has id 0 and next node 1. Node 0x00006000012e8d40 has id 1 and next node 2. Node 0x00006000012e8d20 has id 2 and next node 3. Node 0x00006000012e8ce0 has id 3 and next node 4. Node 0x00006000012e8ae0 has id 4 and next node 5. Node 0x00006000012e89a0 has id 5 and next node 6. Node 0x00006000012e8900 has id 6 and next node 7. Node 0x00006000012e8a40 has id 7 and next node 8. Node 0x00006000012e8a60 has id 8 and next node 9. Node 0x00006000012e8820 has id 9 and no next node. */ 

рдЗрд╕ рд╕реВрдЪреА рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ:

 list.reverse() print(String(describing: list)) /* List 0x00006000012e1a60 has nodes: Node 0x00006000012e8820 has id 9 and next node 8. Node 0x00006000012e8a60 has id 8 and next node 7. Node 0x00006000012e8a40 has id 7 and next node 6. Node 0x00006000012e8900 has id 6 and next node 5. Node 0x00006000012e89a0 has id 5 and next node 4. Node 0x00006000012e8ae0 has id 4 and next node 3. Node 0x00006000012e8ce0 has id 3 and next node 2. Node 0x00006000012e8d20 has id 2 and next node 1. Node 0x00006000012e8d40 has id 1 and next node 0. Node 0x00006000012e2380 has id 0 and no next node. */ 

рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕реВрдЪреА рдФрд░ рдиреЛрдбреНрд╕ рдХреА рд╕реНрдореГрддрд┐ рдореЗрдВ рдкрддреЗ рдирд╣реАрдВ рдмрджрд▓реЗ рдЧрдП рд╣реИрдВ, рдФрд░ рд╕реВрдЪреА рдХреЗ рдиреЛрдбреНрд╕ рд░рд┐рд╡рд░реНрд╕ рдСрд░реНрдбрд░ рдореЗрдВ рдореБрджреНрд░рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВред рдиреЛрдб рдХреЗ рдЕрдЧрд▓реЗ рддрддреНрд╡ рдХреЗ рд▓рд┐рдВрдХ рдЕрдм рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдиреЛрдб "5" рдХрд╛ рдЕрдЧрд▓рд╛ рддрддреНрд╡ рдЕрдм "6" рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди "4")ред рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдордиреЗ рдпрд╣ рдХрд┐рдпрд╛!

рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ред рдкреНрд░рддреНрдпрд╛рд╡рд░реНрддрди


рдЙрд╕реА рдпреВ-рдЯрд░реНрди рдХреЛ рдХрд░рдиреЗ рдХрд╛ рджреВрд╕рд░рд╛ рдЬреНрдЮрд╛рдд рддрд░реАрдХрд╛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдШреЛрд╖рд┐рдд рдХрд░реЗрдВрдЧреЗ рдЬреЛ рд╕реВрдЪреА рдХреЗ рдкрд╣рд▓реЗ рдиреЛрдб рдХреЛ рд▓реЗрддрд╛ рд╣реИ, рдФрд░ "рдирдпрд╛" рдкрд╣рд▓рд╛ рдиреЛрдб рд▓реМрдЯрд╛рддрд╛ рд╣реИ (рдЬреЛ рдХрд┐ рдкрд╣рд▓реЗ рдЕрдВрддрд┐рдо рдерд╛)ред

рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдЗрд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдж рдХреЗ рдиреЛрдб рдкрд░ рдлрд┐рд░ рд╕реЗ рдФрд░ рдлрд┐рд░ рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдЦрд╛рд▓реА рди рд╣реЛ (рдпрд╛рдиреА рдЬрдм рддрдХ рд╕реВрдЪреА рдХреЗ рдЕрдВрдд рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рдЬрд╛рддрд╛)ред рддрджрдиреБрд╕рд╛рд░, рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╢рд░реАрд░ рдореЗрдВ, рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдЬрд┐рд╕ рдиреЛрдб рдкрд░ рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рд╡рд╣ рдЦрд╛рд▓реА рд╣реИ рдпрд╛ рдирд╣реАрдВ рдФрд░ рдЗрд╕ рдиреЛрдб рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рд░рд┐рдЯрд░реНрди рд╡рд╣реА рдХрд░рддрд╛ рд╣реИ рдЬреЛ рддрд░реНрдХ рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореИрдВрдиреЗ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдкреВрд░реНрдг рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдЕрдВрдд рдореЗрдВ рдореИрдВрдиреЗ рд▓рдЧрднрдЧ рд╕рдм рдХреБрдЫ рдорд┐рдЯрд╛ рджрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╕рдордЭрдирд╛ рдЕрд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред рдлрд╝реНрд▓реЛрдЪрд╛рд░реНрдЯреНрд╕ рдХреЛ рдбреНрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреЗ рдЪрд░рдгреЛрдВ рдХрд╛ рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рд╡рд░реНрдгрди рдХрд░реЗрдВ - рд╕рд╛рде рд╣реА, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рдФрд░ рдореЗрд░реЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдкрдврд╝рдиреЗ рдФрд░ рд╕реНрд╡рд┐рдлреНрдЯ рдХреЛрдб рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛:

 extension SinglyLinkedList { func reverseRecursively() { func reverse(_ node: Node<T>?) -> Node<T>? { guard let head = node else { return node } if head.nextNode == nil { return head } let reversedHead = reverse(head.nextNode) head.nextNode?.nextNode = head head.nextNode = nil return reversedHead } firstNode = reverse(firstNode) } } 

рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣реА рдХреЙрд▓рд┐рдВрдЧ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реВрдЪреА рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреА рдПрдХ рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ "рд▓рд┐рдкрдЯреЗ" рд╣реИред

рдпрд╣ рдЫреЛрдЯрд╛ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред

рд╣рдо рдкрд┐рдЫрд▓реЗ рдкреНрд░рд╕рд╛рд░ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдкрд░ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдХрд╣рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдирдпрд╛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╣реИрдВ:

 list.reverseRecursively() print(String(describing: list)) /* List 0x00006000012e1a60 has nodes: Node 0x00006000012e2380 has id 0 and next node 1. Node 0x00006000012e8d40 has id 1 and next node 2. Node 0x00006000012e8d20 has id 2 and next node 3. Node 0x00006000012e8ce0 has id 3 and next node 4. Node 0x00006000012e8ae0 has id 4 and next node 5. Node 0x00006000012e89a0 has id 5 and next node 6. Node 0x00006000012e8900 has id 6 and next node 7. Node 0x00006000012e8a40 has id 7 and next node 8. Node 0x00006000012e8a60 has id 8 and next node 9. Node 0x00006000012e8820 has id 9 and no next node. */ 

рдпрд╣ рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореЗрдореЛрд░реА рдореЗрдВ рд╕рднреА рдкрддреЗ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рдмрджрд▓реЗ рд╣реИрдВ, рдФрд░ рдиреЛрдбреНрд╕ рдЕрдм рдореВрд▓ рдХреНрд░рдо рдореЗрдВ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реИрдВ (рдЕрд░реНрдерд╛рдд, рд╡реЗ "рдлрд┐рд░ рд╕реЗ рддреИрдирд╛рдд" рд╣реИрдВ)ред рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдорд┐рд▓ рдЧрдпрд╛!

рдирд┐рд╖реНрдХрд░реНрд╖


рдпрджрд┐ рдЖрдк рдЙрд▓рдЯ рддрд░реАрдХреЛрдВ рдХреЛ рдзреНрдпрд╛рди рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ (рдпрд╛ рдХреЙрд▓ рдХрд╛рдЙрдВрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░рдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ), рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд▓реВрдк рдФрд░ рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдВрддрд░рд┐рдХ (рдкреБрдирд░рд╛рд╡рд░реНрддреА) рд╡рд┐рдзрд┐ рдХреЙрд▓ рд╕реВрдЪреА рдореЗрдВ рдиреЛрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдПрдХ рдмрд╛рд░ рдХрдо рд╣реЛрддреА рд╣реИ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдиреМ) рд╕рдордп)ред рдЖрдк рдЗрд╕ рдмрд╛рдд рдкрд░ рднреА рдзреНрдпрд╛рди рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд▓реВрдк рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ - рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХрд╛ рдПрдХ рд╣реА рдХреНрд░рдо - рдФрд░ рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкрд╣рд▓рд╛, рдиреЙрди-рд░рд┐рдХрд░реНрд╕рд┐рд╡, рдореЗрдердб рдХреЙрд▓ред рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВ "рд╕рд░реНрдХрд▓" рдХреЛ рджрд╕ рдиреЛрдбреНрд╕ рдХреА рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рджрд╕ рдмрд╛рд░ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛрдиреЛрдВ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд▓рд┐рдП рд░реИрдЦрд┐рдХ рдЬрдЯрд┐рд▓рддрд╛ рд╣реИ - O (n) ред

рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рд╡рд░реНрдгрд┐рдд рджреЛ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдкреНрд░рднрд╛рд╡реА рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рд▓рд┐рдП, рдХрдо рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд╕рд╛рде рдЖрдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ: рдПрдХ рддрд░рд╣ рд╕реЗ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп, рдЖрдкрдХреЛ рд▓рд┐рдВрдХ рдХреЗ рдЕрдВрджрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдПрдХ рдирдП рдореВрд▓реНрдп рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдХреЛ "рд╡рд┐рдЬрд╝рд┐рдЯ" рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЙрд▓реНрд▓реЗрдЦ рдХреЗ рд▓рд╛рдпрдХ рдПрдХ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ "рдЖрд╡рдВрдЯрд┐рдд рд╕реНрдореГрддрд┐ рдЬрдЯрд┐рд▓рддрд╛" рд╣реИред рджреЛрдиреЛрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдирдП рдЪрд░ рдмрдирд╛рддреЗ рд╣реИрдВ (рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рддреАрди рдФрд░ рджреВрд╕рд░реЗ рдореЗрдВ рдПрдХ)ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрд╡рдВрдЯрд┐рдд рдореЗрдореЛрд░реА рдХреА рдорд╛рддреНрд░рд╛ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛рддреНрдордХ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╕реНрдерд┐рд░ рдлрд╝рдВрдХреНрд╢рди - рдУ (1) рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд▓реЗрдХрд┐рди, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд╛ рдЦрддрд░рд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╕реНрдЯреИрдХ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреА рдЧрд╣рд░рд╛рдИ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред

рдФрд░ рдЕрдВрдд рдореЗрдВ, рдореИрдВрдиреЗ рдереЛрдбрд╝рд╛ рдФрд░ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛: рдПрдХ рд╕рд░рд▓ рдФрд░ рдЖрджрд┐рдо рддрд░реАрдХреЗ рд╕реЗ рдореИрдВрдиреЗ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреА рдПрдХ рдЕрд▓рдЧ рд░рд╛рд╢рд┐ рдХреЗ рд▓рд┐рдП рджреЛ рддрд░реАрдХреЛрдВ рдХрд╛ рдкреВрд░реНрдг рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдорд╛рдкрд╛ред рдЗрд╕ рддрд░рд╣:

 let startDate = Date().timeIntervalSince1970 // list.reverse() / list.reverseRecursively() let finishDate = Date().timeIntervalSince1970 let runningTime = finishDate тАУ startDate // Seconds 

рдФрд░ рдпрд╣реА рдореБрдЭреЗ рдорд┐рд▓рд╛ (рдпрд╣ рдкреНрд▓реЗрдЧреНрд░рд╛рдЙрдВрдб рдХрд╛ рдХрдЪреНрдЪрд╛ рдбреЗрдЯрд╛ рд╣реИ):

рдЫрд╡рд┐

(рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореЗрд░реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдиреЗ рдмрдбрд╝реЗ рдореВрд▓реНрдпреЛрдВ рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдирд╣реАрдВ рдХреА рд╣реИред)

рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдХреНрдпрд╛ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдЕрднреА рддрдХ рдХреБрдЫ рдЦрд╛рд╕ рдирд╣реАрдВ рд╣реБрдЖред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╡рд┐рдзрд┐ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдХрдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдиреЛрдбреНрд╕ рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рдЦрд░рд╛рдм рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╣реАрдВ рди рдХрд╣реАрдВ 100 рдФрд░ 1000 рдХреЗ рдмреАрдЪ рдпрд╣ рдмреЗрд╣рддрд░ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдПрдХ рдкреВрд░реНрдг рд╕рд░рд▓ "Xcode" рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЕрдВрджрд░ рдПрдХ рд╣реА рд╕рд░рд▓ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рднреА рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред рдкрд░рд┐рдгрд╛рдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:

рдЫрд╡рд┐

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдкрд░рд┐рдгрд╛рдо рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЧрддрд┐ ( -Ofast ) рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ "рдЖрдХреНрд░рд╛рдордХ" рдЕрдиреБрдХреВрд▓рди рдореЛрдб рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП рдереЗ, рдЬреЛ рдХрд┐ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрдЦреНрдпрд╛ рдЗрддрдиреА рдЫреЛрдЯреА рдХреНрдпреЛрдВ рд╣реИред рдпрд╣ рднреА рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╡рд┐рдзрд┐ рдиреЗ рдЦреБрдж рдХреЛ рдереЛрдбрд╝рд╛ рдмреЗрд╣рддрд░ рджрд┐рдЦрд╛рдпрд╛, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдХреЗрд╡рд▓ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреЗ рдмрд╣реБрдд рдЫреЛрдЯреЗ рдЖрдХрд╛рд░реЛрдВ рдкрд░, рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 100 рдиреЛрдбреНрд╕ рдХреА рд╕реВрдЪреА рдореЗрдВ, рд╡рд┐рдзрд┐ рдЦреЛ рджреЗрддреА рд╣реИред 100,000 рдореЗрдВ рд╕реЗ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдЕрд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ред

рдирд┐рд╖реНрдХрд░реНрд╖


рдореИрдВрдиреЗ рдЗрд╕ рд╕рдордп рдЕрдкрдиреА рдкрд╕рдВрджреАрджрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдПрдХ рдмрд▓реНрдХрд┐ рдХреНрд▓рд╛рд╕рд┐рдХ рд╡рд┐рд╖рдп рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдФрд░ рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдкреНрд░рдЧрддрд┐ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЦреБрдж рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рдереЗред рдореБрдЭреЗ рднреА рдмрд╣реБрдд рдЦреБрд╢реА рд╣реБрдИ рдЕрдЧрд░ рдЖрдк рдХреБрдЫ рдирдпрд╛ рд╕реАрдЦрдиреЗ рдореЗрдВ рд╕рдлрд▓ рд░рд╣реЗ - рддреЛ рдореИрдВрдиреЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ ( рдЯреАрд╡реА рд╢реЛ рджреЗрдЦрдиреЗ рдФрд░ рджреЗрдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп) рдЕрдкрдирд╛ рд╕рдордп рдмрд░реНрдмрд╛рдж рдХрд┐рдпрд╛ред

рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдореЗрд░реА рд╕рд╛рдорд╛рдЬрд┐рдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╣реИ, рддреЛ рдпрд╣рд╛рдВ рдореЗрд░реЗ "рдЯреНрд╡рд┐рдЯрд░" рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рд╣реИ, рдЬрд╣рд╛рдВ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдореЗрд░реА рдирдИ рдкреЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдВрдХ рдФрд░ рдХреБрдЫ рдФрд░ рд╣реИрдВред

Source: https://habr.com/ru/post/hi455842/


All Articles