Refactor
:my
=>
'code'
Codes
Refactorings
Popular
Best
Submit
Spam
Account
Logout
Login
JavaScript doesn't seem to be activated, expect things to be ugly and sloppy!
More Jobs
Recent
brute-force password cracker
Highlight Selected forms, Set default vaues, Rails, JS, Lowpro
nested array to set of html anchor tags
Prime or Not
Open hours grouping
Search nested hash
Search with fulltext, ago-condition and category
Permutation of values
Drop all Indexes in SQL Server
Simple For Loop
Popular
Small Javascript Code
Simple For Loop
Drop all Indexes in SQL Server
Permutation of values
Search with fulltext, ago-condition and category
Prime or Not
nested array to set of html anchor tags
Highlight Selected forms, Set default vaues, Rails, JS, Lowpro
Parsing non-delimited text
Toggle "Check all / Uncheck all" with jQuery
Pastable version of
Stack Implementation
<div style="overflow:auto;border:solid 1px #ccc;background:#000;color:#F8F8F8"> <div class="section"> <pre style="float:left;margin:0 10px;border-right:0;color:#666;">1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115</pre> <pre class="sunburst"><span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">/*</span></span> <span style="color:#AEAEAE;font-style:italic;"> * Stack.c</span> <span style="color:#AEAEAE;font-style:italic;"> *</span> <span style="color:#AEAEAE;font-style:italic;"> * Program to demonstrate the stack concept</span> <span style="color:#AEAEAE;font-style:italic;"> *</span> <span style="color:#AEAEAE;font-style:italic;"> * by Ahmed M. Sha'alan, disturbed.619@gmail.com, www.thedb.com/m</span> <span style="color:#AEAEAE;font-style:italic;"> <span style="color:#AEAEAE;font-style:italic;">*/</span></span> <span style="color:#8996A8;">#<span style="color:#AFC4DB;">include</span> <span style="color:#65B042;"><span style="color:#65B042;"><</span>stdio.h<span style="color:#65B042;">></span></span></span> <span style="color:#8996A8;">#<span style="color:#AFC4DB;">include</span> <span style="color:#65B042;"><span style="color:#65B042;"><</span>stdlib.h<span style="color:#65B042;">></span></span> </span><span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">//</span>for the system() and exit() functions</span> #<span style="color:#E28964;">define</span> <span style="color:#89BDFF;">STACKSIZE</span> <span style="color:#3387CC;">100</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">//</span>the stack size</span> <span style="color:#99CF50;">struct</span> STACK { <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">//</span>stack structure</span> <span style="color:#99CF50;">short</span> <span style="color:#99CF50;">int</span> top; <span style="color:#99CF50;">int</span> items[STACKSIZE]; }; <span style="color:#99CF50;">typedef</span> <span style="color:#99CF50;">struct</span> STACK stk; <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">//</span>a short-hand for the stack</span> <span style="color:#99CF50;">int</span> empty(stk *ptr){ <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">//</span>checks if the stack is empty</span> <span style="color:#E28964;">return</span>(ptr->top<<span style="color:#3387CC;">0</span>?<span style="color:#3387CC;">1</span>:<span style="color:#3387CC;">0</span>); <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">//</span>shorter and makes more sense than the IF statment</span> } <span style="color:#99CF50;">int</span> <span style="color:#89BDFF;">fu<span style="color:#89BDFF;">ll</span></span>(stk *ptr) { <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">//</span>checks if the stack is full</span> <span style="color:#E28964;">return</span>(ptr->top>=STACKSIZE?<span style="color:#3387CC;">1</span>:<span style="color:#3387CC;">0</span>); <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">//</span>read above</span> } <span style="color:#99CF50;">void</span> <span style="color:#89BDFF;">pu<span style="color:#89BDFF;">sh</span></span>(stk *ptr, <span style="color:#99CF50;">int</span> *x) { <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">//</span>pushs a value to the top of the stack</span> ptr->items[++ptr->top]=*x; } <span style="color:#99CF50;">int</span> pop(stk *ptr) { <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">//</span>displays the top value of the stack</span> <span style="color:#E28964;">return</span> (ptr->items[ptr->top--]); } <span style="color:#99CF50;">void</span> print_pop(stk *ptr){ <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">//</span>the pop() function but with empty() check and messages</span> <span style="color:#E28964;">if</span>(empty(ptr)) <span style="color:#DAD085;">puts</span>(<span style="color:#65B042;"><span style="color:#65B042;">"</span>>>The stack is empty!<span style="color:#65B042;">"</span></span>); <span style="color:#E28964;">else</span> <span style="color:#DAD085;">printf</span>(<span style="color:#65B042;"><span style="color:#65B042;">"</span>>>The last value in the stack is: <span style="color:#DDF2A4;">%d</span>.<span style="color:#DDF2A4;">\n</span><span style="color:#65B042;">"</span></span>, pop(ptr)); } <span style="color:#99CF50;">void</span> <span style="color:#89BDFF;">print_pu<span style="color:#89BDFF;">sh</span></span>(stk *ptr){ <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">//</span>the push() function with the checking and messages</span> <span style="color:#99CF50;">int</span> x; <span style="color:#E28964;">if</span>(full(ptr)) <span style="color:#DAD085;">puts</span>(<span style="color:#65B042;"><span style="color:#65B042;">"</span>>>The stack is full!<span style="color:#65B042;">"</span></span>); <span style="color:#E28964;">else</span>{ <span style="color:#DAD085;">printf</span>(<span style="color:#65B042;"><span style="color:#65B042;">"</span>>>Enter the value you want to push: <span style="color:#65B042;">"</span></span>); <span style="color:#DAD085;">fflush</span>(stdin); <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">/*</span>to clear the standard input and prevent a weird behavior,</span> <span style="color:#AEAEAE;font-style:italic;">although i been told it's not THE way 2 do it<span style="color:#AEAEAE;font-style:italic;">*/</span></span> <span style="color:#DAD085;">scanf</span>(<span style="color:#65B042;"><span style="color:#65B042;">"</span><span style="color:#DDF2A4;">%d</span><span style="color:#65B042;">"</span></span>, &x); push(ptr, &x); <span style="color:#DAD085;">puts</span>(<span style="color:#65B042;"><span style="color:#65B042;">"</span>>>done!<span style="color:#65B042;">"</span></span>); } } <span style="color:#99CF50;">void</span> print_all(stk *ptr) { <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">//</span>prints all the elements in the stack</span> <span style="color:#99CF50;">unsigned</span> <span style="color:#99CF50;">short</span> <span style="color:#99CF50;">int</span> i=<span style="color:#3387CC;">0</span>; <span style="color:#DAD085;">system</span>(<span style="color:#65B042;"><span style="color:#65B042;">"</span>cls<span style="color:#65B042;">"</span></span>); <span style="color:#DAD085;">puts</span>(<span style="color:#65B042;"><span style="color:#65B042;">"</span>********************<span style="color:#65B042;">"</span></span>); <span style="color:#E28964;">if</span> (empty(ptr)) <span style="color:#DAD085;">puts</span>(<span style="color:#65B042;"><span style="color:#65B042;">"</span>>>The stack is empty!<span style="color:#65B042;">"</span></span>); <span style="color:#E28964;">else</span>{ <span style="color:#E28964;">for</span> (;i<=ptr->top;i++) <span style="color:#DAD085;">printf</span>(<span style="color:#65B042;"><span style="color:#65B042;">"</span>|<span style="color:#DDF2A4;">%d</span>- <span style="color:#DDF2A4;">%d</span><span style="color:#DDF2A4;">\n</span><span style="color:#65B042;">"</span></span>,i+<span style="color:#3387CC;">1</span>, ptr->items[i]); } <span style="color:#DAD085;">puts</span>(<span style="color:#65B042;"><span style="color:#65B042;">"</span>********************<span style="color:#65B042;">"</span></span>); } <span style="color:#99CF50;">void</span> interface(stk *ptr) { <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">//</span>the "interface" lol, i KNOW it's a console aplication :D</span> <span style="color:#99CF50;">unsigned</span> <span style="color:#99CF50;">short</span> <span style="color:#99CF50;">int</span> choice; <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">//</span>we only need numbers from 1 to 4</span> <span style="color:#DAD085;">system</span>(<span style="color:#65B042;"><span style="color:#65B042;">"</span>cls<span style="color:#65B042;">"</span></span>); <span style="color:#DAD085;">puts</span>(<span style="color:#65B042;"><span style="color:#65B042;">"</span><span style="color:#DDF2A4;">\n</span>=====================================<span style="color:#65B042;">"</span></span>); <span style="color:#DAD085;">puts</span>(<span style="color:#65B042;"><span style="color:#65B042;">"</span>Stack Implementation in C...<span style="color:#65B042;">"</span></span>); <span style="color:#DAD085;">puts</span>(<span style="color:#65B042;"><span style="color:#65B042;">"</span>=====================================<span style="color:#65B042;">"</span></span>); BEGINING: <span style="color:#DAD085;">puts</span>(<span style="color:#65B042;"><span style="color:#65B042;">"</span><span style="color:#DDF2A4;">\n</span>=======================================================<span style="color:#65B042;">"</span></span>); <span style="color:#DAD085;">puts</span>(<span style="color:#65B042;"><span style="color:#65B042;">"</span>1- Press 1 for putting a value in the stack.<span style="color:#65B042;">"</span></span>); <span style="color:#DAD085;">puts</span>(<span style="color:#65B042;"><span style="color:#65B042;">"</span>2- Press 2 for displaying the last value in the stack.<span style="color:#65B042;">"</span></span>); <span style="color:#DAD085;">puts</span>(<span style="color:#65B042;"><span style="color:#65B042;">"</span>3- Press 3 for displaying ALL the values in the stack.<span style="color:#65B042;">"</span></span>); <span style="color:#DAD085;">puts</span>(<span style="color:#65B042;"><span style="color:#65B042;">"</span>4- Press 4 for exiting the program.<span style="color:#65B042;">"</span></span>); <span style="color:#DAD085;">puts</span>(<span style="color:#65B042;"><span style="color:#65B042;">"</span>=======================================================<span style="color:#65B042;">"</span></span>); <span style="color:#DAD085;">printf</span>(<span style="color:#65B042;"><span style="color:#65B042;">"</span>What do you want to do? <span style="color:#65B042;">"</span></span>); <span style="color:#DAD085;">fflush</span>(stdin); <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">//</span>read above</span> <span style="color:#DAD085;">scanf</span>(<span style="color:#65B042;"><span style="color:#65B042;">"</span><span style="color:#DDF2A4;">%d</span><span style="color:#65B042;">"</span></span>, &choice); <span style="color:#DAD085;">puts</span>(<span style="color:#65B042;"><span style="color:#65B042;">"</span><span style="color:#65B042;">"</span></span>); <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">//</span>new line</span> <span style="color:#E28964;">switch</span> (choice) { <span style="color:#E28964;">case</span> <span style="color:#3387CC;">1</span>: print_push(ptr); <span style="color:#E28964;">break</span>; <span style="color:#E28964;">case</span> <span style="color:#3387CC;">2</span>: print_pop(ptr); <span style="color:#E28964;">break</span>; <span style="color:#E28964;">case</span> <span style="color:#3387CC;">3</span>: print_all(ptr); <span style="color:#E28964;">break</span>; <span style="color:#E28964;">case</span> <span style="color:#3387CC;">4</span>: <span style="color:#DAD085;">exit</span>(<span style="color:#3387CC;">1</span>); <span style="color:#E28964;">default</span>: <span style="color:#DAD085;">puts</span>(<span style="color:#65B042;"><span style="color:#65B042;">"</span>>>Please make sure you've entered a valid option..<span style="color:#65B042;">"</span></span>); <span style="color:#E28964;">break</span>; } <span style="color:#E28964;">goto</span> BEGINING; <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">//</span>repeat again and again til the user exits</span> } <span style="color:#99CF50;">int</span> <span style="color:#89BDFF;">ma<span style="color:#89BDFF;">in</span></span>() { <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">//</span>finaly the main :D</span> stk stack; stack.top=-<span style="color:#3387CC;">1</span>; <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">//</span>sets the top to -1 for the stack to act right</span> interface(&stack); <span style="color:#E28964;">return</span> <span style="color:#3387CC;">0</span>; } </pre> </div> </div> <a href="http://refactormycode.com/codes/126-stack-implementation" style="color:#fff" title="As seen on RefactorMyCode.com"><img alt="Small_logo" src="http://refactormycode.com/images/small_logo.gif" style="border:0" /></a>