1. 程式人生 > >C語言實現棧的操作

C語言實現棧的操作

#include <stdio.h>
#include <stdlib.h>
void push(int);
int pop();

int *pi = NULL;//top指標
int *tos = NULL;//head指標

int main()
{
    int v;
    //申請50個int的空間
    pi = (int *)malloc(50*sizeof(int));
    if(!pi)
    {
        printf("allocation failure\n");
        exit(0);
    }
    tos = pi;
    do
    {
        printf("please input value, push it;enter 0 then pop;(enter -1 then stop)\n");
        scanf("%d", &v);
        if(v!=0)
            push(v);//加入空間
        else
            printf("pop this is it %d\n", pop());
    } while(v!=-1);

    free(tos);
}

void push(int i)
{
    pi++;
    if(pi==(tos+50))
    {
        printf("stack overflow\n");
        exit(0);
    }
    *pi = i;
}

int pop()
{
    if(pi==tos)
    {
        printf("stack underflow\n");
        exit(0);
    }
    pi--;
    return *(pi+1);
}

相關推薦

C語言實現操作

                                                                             如果把棧看成一個標尺,每個元素對應了一個刻度

C語言實現和佇列(和佇列的基本操作)

棧: 棧:棧(stack)又名堆疊,它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算。這一端被稱為棧頂,相對地,把另一端稱為棧底。 特點:先進後出 stack.h #pragma once #include <stdio.h> #include <

嚴蔚敏資料結構C語言實現的基本操作

int main(){   SqStack S;   SElemType *e;   int n,i;   InitStack(&S);   printf("請輸入需要入棧的資料個數\n");   scanf("%d",&n);   for(i=0;i<n;i++)   {    sca

C語言實現以及的簡單操作

一   棧的定義: 棧(堆疊)是一種線性表,它的特點是僅允許在棧的一端進行插入、刪除等操作。棧底固定,棧頂浮動。其特性為後進先出。一般棧中元素為0時,稱為空棧。它有兩種實現方式,順序棧與鏈棧,下面將簡單的說明一下順序棧及鏈棧的生成與簡單操作。 棧的簡單操作如圖所示:(top從0到3

C語言實現操作

#include <stdio.h> #include <stdlib.h> void push(int); int pop(); int *pi = NULL;//top指標 int *tos = NULL;//head指標 int main(

C語言實現(陣列)

陣列實現棧 #include <stdio.h> #include <stdlib.h> #define MAXSIZE 1000 #define element_type

C語言實現(基於陣列)

棧是一種操作受限的資料結構,只允許從一段操作,而且先進後出(FILO  first in last out)這裡將棧的操作封裝在C語言的標頭檔案裡 實現棧的程式碼如下 #include<stdbool.h> #define maxsize 10 typed

C語言實現程式碼

/* 棧的特性:先進後出。 棧在計算語言處理和將遞迴演算法改為非遞迴演算法等方面起著非常重要的作用。 */ #define INITSIZE 100 //儲存空間的初始分配量 typedef int ElemType; typedef struct { int top;

資料結構之---C語言實現的表示式求值(表示式樹)

利用棧實現表示式樹這裡我一共有兩種思路: part one: 首先判斷輸入表示式的每個字元,如果遇到運算子,不壓棧, 接著彈出兩個棧頂的元素,進行元素,接著把結果壓棧。 程式碼: //棧實現表示式 //思路:此程式的思路是,讀取輸入的字串,然後判斷每個字元, //當遇到

順序的基本操作(入和出)及C語言實現詳解

棧,可以理解為遵循“後入先出”原則的線性表,因此棧結構可以採用順序表或連結串列實現。 順序棧的實現採用的是順序表,也就是陣列。 順序棧的實現思想是:在陣列中設定一個隨時指向棧頂元素的變數(一般命名為 top ),當 top 的值為 -1 時,說明陣列中沒有資料,即棧中沒有資料元素,為“空棧”;只要資料元素

的基本操作(入和出)及C語言實現完全攻略

鏈棧,即用線性表的連結串列結構實現棧的功能。實現過程中,鏈棧不需要建立頭結點,增加頭結點反而會增加程式的複雜性,因此連結串列中只需要建立一個頭指標就可以了。 鏈棧的實現思想是:用連結串列頭結點的一端作為棧的棧頂端,這樣做的好處是當資料元素壓棧或者彈棧時,直接使用頭指標就可以完成,不需要增設額外的指標。 例

資料結構——入,出,佇列相關操作C語言實現

閱讀過程之中可能會花費比較多的時間:建議直接翻到最後,有完整的程式碼可以使用 程式準備工作 #include <stdio.h> #include <malloc.h> #include <stdlib.h> #include<proc

C語言陣列實現操作

#include <stdio.h> #include <stdlib.h> int * array=NULL;//存放棧元素的陣列 int count=0;//當前棧的元素個數 //初始化棧 void init_stack(int

操作c語言實現算術表示式求值

</pre><p><span style="font-size:18px;">棧是一種特殊的線性表,按照“後進先出”的原則處理資料。</span></p><p><span style="font

C語言實現連結串列、、佇列的基本操作

一、連結串列的基本操作#include <stdio.h> #include <stdlib.h> typedef struct LNode{ int data; struct LNode *next; }LNode,*LinkList; //頭插

實現操作(C語言實現)

棧的定義 1, 棧是一種特殊的線性表 2,棧僅能線上性表的一端進行操作 3,棧頂(Top): 允許操作的一端 允許操作的一端 4,棧底(Bottom): ,不允許操作的一端 不允許操作的一端 這裡我做出了 棧的順序實現 和 鏈式實現,分別如下: =============

C語言實現順序的基本操作

//標頭檔案內容//--------------------棧的順序儲存結構-------------------- #define STACK_INIT_SIZE 100 #define STACKINCREACE 10 typedef int Elemtype;//在

演算法與資料結構-的基本操作C語言實現

序言 複習棧的基本操作及其C語言實現,主要以鏈式棧為例。 本文將介紹棧的以下基本操作: 棧的建立(順序棧和鏈式棧) 棧的初始化 棧遍歷 棧清空/銷燬 判斷棧是否為空 求棧的長度 返回並刪除棧頂元素 1. 棧建立 - 順序棧和鏈式棧 //順序棧的

C語言頂和底指標實現操作及用實現數值轉換

棧是一種先進先出(FIFO)的資料結構。。廢話不多說,直接貼程式碼程式碼參考了小甲魚的資料機構課程#include "stdafx.h" #include <stdlib.h> #include <stdio.h> #include <math.

[資料結構]c語言實現的入,出,清空,銷燬等操作

最近在學習資料結構中的棧,於是在此記錄一下棧鏈式結構的抽象資料型別 /* 棧的抽象資料型別 ADT 棧(stack) Data 同線性表。元素具有相同的型別,相鄰元素具有前驅和後繼關係 Operation InitStack(*S):初始化