数据结构与算法——编程实践

数据结构与算法课程团队,全力打造


2.1 栈的操作C(6段代码)

<h2>栈的结构体</h2> <pre><code class="language-c">#define maxSize 10 typedef struct{     int top;     char c[maxSize]; }stack;</code></pre> <h2>栈的初始化</h2> <pre><code class="language-c">stack* init(){     stack* s = (stack*)malloc(sizeof(stack));     s-&amp;gt;top = -1;     return s; }</code></pre> <h2>入栈</h2> <pre><code class="language-c">void push(stack* s, char p){     if(s-&amp;gt;top == maxSize-1){         printf(&amp;quot;full&amp;quot;);         return;     }     s-&amp;gt;top += 1;     s-&amp;gt;c[s-&amp;gt;top] = p; }</code></pre> <h2>出栈</h2> <pre><code class="language-c">char pop(stack* s){     if(s-&amp;gt;top == -1){         return 0;     }     return s-&amp;gt;c[s-&amp;gt;top--]; }</code></pre> <h2>获取栈顶元素</h2> <pre><code class="language-c">char getTop(stack* s){     if(s-&amp;gt;top == -1){         return 0;     }     return s-&amp;gt;c[s-&amp;gt;top]; }</code></pre> <h2>格式化输出栈(不重要)</h2> <pre><code class="language-c">void show(stack* s){     int i;     printf(&amp;quot;show stack:\n&amp;quot;);     printf(&amp;quot;\t&amp;quot;);     for(i=0; i&amp;lt;=s-&amp;gt;top; i++){         printf(&amp;quot;\t%c&amp;quot;, s-&amp;gt;c[i]);     }     printf(&amp;quot;\n&amp;quot;);     for(i=-1; i&amp;lt;s-&amp;gt;top; i++){         printf(&amp;quot;\t_&amp;quot;);     }     printf(&amp;quot;\t#&amp;quot;);     for(i=s-&amp;gt;top+1; i&amp;lt;maxSize; i++){         printf(&amp;quot;\t_&amp;quot;);     }     printf(&amp;quot;\n&amp;quot;);     for(i=-1; i&amp;lt;maxSize; i++){         printf(&amp;quot;\t%d&amp;quot;, i);     }     printf(&amp;quot;\n\n\n&amp;quot;); } </code></pre>

页面列表

ITEM_HTML