Welcome to the Treehouse Community
The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

Aananya Vyas
20,157 Pointsi tried using codes online to get help and through documentation m unable to use this please help?
Next, let's add functionality to use the queue. First, create an instance method named enqueue that takes an element and adds it to the end of the Queue. Omit the external argument label here. For example, given the queue: [1,4,9], calling enqueue with 7, results in [1,4,9,7]
thats the question^ (My code below)
struct Queue<Element> {
var array: [Element] = []
var count : Int {
return array.count
}
var isEmpty: Bool {
if array.count == 0 {
return true
} else {
return false
}
}
class Node : Element {
// variables
var data: Element
var prev: Node?
init(data: Element){
self.data = data
}
}
// variables
var head: Node?
var tail: Node?
func enqueue(e: Element){
if head == nil && tail == nil {
head = Node(data: e)
head?.prev = nil
tail = head
} else {
var temp = Node(data: e)
tail?.prev = temp
tail = temp
}
}
func dequeue() -> Element{
var result = head?.data
if head === tail {
head = nil
tail = nil
} else {
head = head?.prev
}
if (result == nil){
return "empty"
}
return result!
}
}
1 Answer

miikis
44,942 PointsHi Aananya,
You could have just asked for clarification on your earlier question, instead of creating a new one. Nonetheless, the reason you're having trouble with the Challenge is because you're over-complicating the tasks assigned.
You seem to be trying to implement a Linked-List but all the Challenge is asking you to do is to create a wrapper-struct around the array type so that the resulting structure behaves like a Queue (a First In, First Out structure). So:
- Your isEmpty property can just return array.isEmpty
- Your count property can just return array.count
- Your enqueue method can just array.append(element)
- Your dequeue method can just return array.removeFirst()
There's no need to create a Node class or mess around with head and tail properties. Let me know if that makes sense.
Aananya Vyas
20,157 PointsAananya Vyas
20,157 Pointsswift_lint.swift:23:18: error: cannot invoke 'append' with an argument list of type '((Element).Type)' return array.append(Element) ^ swift_lint.swift:23:18: note: expected an argument list of type '(Element)' return array.append(Element) ^
it shows this in the preview
miikis
44,942 Pointsmiikis
44,942 PointsYou forgot an argument label:
Aananya Vyas
20,157 PointsAananya Vyas
20,157 Pointsoops my bad thanks for the help though!