Queue/Usage: Difference between revisions
Content added Content deleted
m (Formatting.) |
No edit summary |
||
Line 226: | Line 226: | ||
StringReplace %queue%, %queue%, |, |, UseErrorLevel |
StringReplace %queue%, %queue%, |, |, UseErrorLevel |
||
Return %queue% = "" ? 0 : ErrorLevel+1 |
Return %queue% = "" ? 0 : ErrorLevel+1 |
||
}</lang> |
|||
=={{header|AWK}}== |
|||
by af |
|||
<lang awk>function deque(arr) { |
|||
arr["start"] = 0 |
|||
arr["end"] = 0 |
|||
} |
|||
function dequelen(arr) { |
|||
return arr["end"] - arr["start"] |
|||
} |
|||
function push(arr, elem) { |
|||
arr[++arr["end"]] = elem |
|||
} |
|||
function pop(arr) { |
|||
if (dequelen(arr) == 0) { |
|||
return |
|||
} |
|||
return arr[arr["end"]--] |
|||
} |
|||
function unshift(arr, elem) { |
|||
arr[arr["start"]--] = elem |
|||
} |
|||
function shift(arr) { |
|||
if (dequelen(arr) == 0) { |
|||
return |
|||
} |
|||
return arr[++arr["start"]] |
|||
} |
|||
function printdeque(arr, i, sep) { |
|||
printf("[") |
|||
for (i = arr["start"] + 1; i <= arr["end"]; i++) { |
|||
printf("%s%s", sep, arr[i]) |
|||
sep = ", " |
|||
} |
|||
printf("]\n") |
|||
} |
|||
BEGIN { |
|||
deque(q) |
|||
for (i = 1; i <= 10; i++) { |
|||
push(q, i) |
|||
} |
|||
printdeque(q) |
|||
for (i = 1; i <= 10; i++) { |
|||
print shift(q) |
|||
} |
|||
printdeque(q) |
|||
}</lang> |
}</lang> |
||