C語言實現堆疊,求C語言程式例項,鍊錶實現堆疊的操作

時間 2022-08-05 07:47:26

1樓:匿名使用者

#include

char a[1111];

char* sp = a;

#define push(x) (*sp++ = x)#define pop() (*--sp)#define top() (sp[-1])#define empty() (sp == a)int main(void)

printf("你輸入的內容是:\n\n");

*sp = 0;

printf(a);

return 0;}

求c語言程式例項,鍊錶實現堆疊的操作

2樓:匿名使用者

/*建立鍊錶資料結構*/

typedef struct s stack;

/*定義棧頂指標*/stack *top=null;

/*進棧*/

void push(int i)

/*出棧*/

void pop()

/*主函式*/

int main()

3樓:匿名使用者

可以參考這個~很詳細~

怎麼用c語言編寫堆疊並能進行四則運算

4樓:匿名使用者

用乙個棧就可以,需要先把表示式改一下,改成那種運算數在前面,運算子在後面

比如a+b -> ab+

(a+b) * (c+d) + c -> (ab+)(cd+)c*+然後由右向左進棧。。。

出棧應該是ab+先出棧就對了

5樓:**夢幻

兩個棧,分別存放符號(+-*/())和運算數

然後按照運算子優先順序彈出運算數和符號再將運算結果壓入運算數的棧,最後運算子棧空了,運算數棧只剩下乙個數,那就是最後的結果。

6樓:

資料結構的書上有完整實現。在這裡說不清。

利用堆疊指標push和pop編寫乙個c語言程式 10

7樓:匿名使用者

#include

#include

struct node;

typedef struct node *ptrtonode;

typedef ptrtonode stack;

struct node

;int isempty( stack s )void push( int x, stack s )//壓棧else

}int top( stack s )//返回棧頂元素printf("the stack is empty!");

return -1;

}void pop( stack s )//出棧else

}void makeempty( stack s )//清空棧else}}

stack createstack()//建立新棧s->next = null;

makeempty( s );

return s;

}void main()

for(i=1;i<=20;++i)

}希望能幫到你,回答有點晚,希望來得及~

8樓:匿名使用者

這個自己寫,有問題再出來問.

求c語言堆疊**。靜態就行,只要有 出,入,取棧頂就行了

9樓:張新香

typedef struct

seqstack;

//初始化stackinitiate(s)

void stackinitiate(seqstack *s) //初始化順序堆疊s

//非空否stacknotempty(s)

int stacknotempty(seqstack s)

//判斷順序堆疊s非空否,非空返回1,否則返回0

//入棧stackpush(seqstack *s,datatype x)

int stackpush(seqstack *s,datatype x)

//把資料元素值x壓入順序堆疊s,入棧成功返回1,否則返回0

else

}//出棧stackpop(seqstack *s,datatype *d)

int stackpop(seqstack *s,datatype *d)

//彈出順序堆疊s的棧頂資料元素值到引數d,出棧成功返回1,否則返回0

else

}//取棧頂資料元素stacktop(seqstack s,datatype *d)

int stacktop(seqstack s,datatype *d)

//取順序堆疊s的當前棧頂元素值到引數d,。成功返回1,否則返回0

else

}//測試**

#include

#include

#define maxstacksize 100 //定義maxstacksize為100

typedef int datatype;

#include"seqstack.h"

void main(void)

取棧頂資料元素

else

printf("當前棧頂資料元素為:%d\n",x);

printf("依次出棧的資料元素序列如下:\n");

while(stacknotempty(mystack))}

10樓:

//靜態就能滿足你的要求的話,可以把動態那些**去掉即可

#define stack_init_size 100 //儲存空間初始分配量

#define stackincrement 10 //儲存空間分配增量

#define ok 0

#define error -65535

//定義乙個順序棧

typedef struct

sqstack;

int initstack( sqstack *s )

s->top = s->base;

s->stacksize = stack_init_size;

return ok;

}int gettop( sqstack *s, int *element)

*element = *(s->top - 1);

return *element;

}int push( sqstack *s, int element )

s->top = s->base + s->stacksize;

s->stacksize += stackincrement;

}*s->top++ = element;

return ok;

}int pop( sqstack *s, int *element )

*element = * (--s->top);

return ok;}

11樓:匿名使用者

#pragma once

template

class sq_stack

;template

sq_stack::sq_stack(int nummaxset)template

sq_stack::~sq_stack()template

int sq_stack::flag_aq_stack()template

bool sq_stack::push_sq_stack(objtype insobj)

template

objtype sq_stack::pop_sq_stack()template

objtype sq_stack::read_sq_stack()

急求C語言實現小演算法,急求C語言實現乙個小演算法

這個是簡單的歸併排序,我用c來幫你寫出這個排序的函式 void merge int a,int p,int q,int r if s q 1 for k r k b k a t else for k r k b k a s for i p i r i a i b i include void mai...

怎麼用c語言實現最玄乘法,怎麼用C語言實現最小二乘法

include define n 4 共有4個記錄,根據需要增加記錄typedef struct datadata 根據d中的n個data記錄,計算出線性方程的a,b兩值 double fi11 0,fi12 0,fi21 0,fi22 0,f1 0,f2 0 int i for i 0 i 最小二...

c語言實現多執行緒,C語言怎樣實現多執行緒?

首先你要有控制蛇移動方向的全域性變數 定義在main以外因為執行緒函式也要呼叫它,每次鍵盤輸入都會修改它的值 比如 char direction a 左 w 右 d 上 s 下,然後你在移動時應該是在while裡面操作的吧,你每移動一步前都讀一下direction這個變數的數值然後再控制移動方向 注...

密碼強度問題C語言實現,C語言程式設計如何實現「計算圓的面積」?

提乙個思路吧。迴圈遍歷密碼,計算出密碼的長度long。同時可以統計出大寫字母的個數letters和小寫字母的個數letters。以及數字的個數number。統計這三個數字分別呼叫三個函式實現,每次傳進去的引數是當前讀到的字元。若匹配到,則標記變數加一。到這裡 密碼長度,密碼組成的分數都已經可以算出來...

用C語言實現成績統計程式的設計,用C語言設計乙個學生成績統計程式,

這個不僅僅是c語言的問題 而且是資料結構的排序問題 所以。如果想做這個必須得學過資料結構才行。而且至少要花一小段時間才能寫出來,我現在在網咖,沒時間寫啊,不過這個不難的,應該很簡單,看一下資料結構書上排序的那章應該就會寫了 無聊,沒事,就幫你寫寫吧!include 包含基本輸入輸出功能的庫class...