99偷拍视频精品区一区二,口述久久久久久久久久久久,国产精品夫妇激情啪发布,成人永久免费网站在线观看,国产精品高清免费在线,青青草在线观看视频观看,久久久久久国产一区,天天婷婷久久18禁,日韩动漫av在线播放直播

編寫入棧函數c語言 c語言棧的用法

急!用C語言編寫個使用棧的程序,簡單點的,包含入棧,出棧等幾個基本操作就行。

就用這堆函數就可以了,不懂再追問

平涼網站建設公司創新互聯公司,平涼網站設計制作,有大型網站制作公司豐富經驗。已為平涼上千余家提供企業網站建設服務。企業網站搭建\成都外貿網站建設公司要多少錢,請找那個售后服務好的平涼做網站的公司定做!

#include string.h

#define MaxSize 100

int mystack[MaxSize];/* 第0個單元保存現在的長度 */

/* 初始化函數 */

void init_stack(int* stack){

memset(stack,0,sizeof(stack));

}

/* 入棧函數 */

void push_back(int* stack,int num){

if(stack[0]MaxSize-1){

++stack[0];

stack[ stack[0] ] = num;

}

else{

printf("ERORR!\n");

}

}

/* 返回棧空間 */

int size(int* stack){

return stack[0];

}

/* 返回棧頂函數 */

int top(int* stack){

if(stack[0]0){

return stack[ stack[0] ];

}

else{

printf("ERORR!\n");

return -1;

}

}

/* 出棧函數 */

void pop(int* stack){

if(stack[0]0){

--stack[0];

}

else{

printf("ERORR!\n");

}

}

請用C語言編寫一個堆棧函數程序

//該程序簡單并可正確運行,希望kutpbpb的回答能對你有所幫助!

#includestdio.h

#define N 100

typedef struct

{

int value[N];

int base;

int top;

}Sta;

void print()

{

printf("\n菜單:");

printf("\n1.入棧:");

printf("\n2.出棧:");

printf("\n3.退出:");

}

void printS(Sta S)

{

printf("\n請輸出棧中元素:");

for(int i=S.top;i!=S.base;i--)

printf("%d ",S.value[i-1]);

}

void pushS(Sta S,int e)

{

if(S.top==N)

printf("\n棧滿");

else

S.value[S.top++]=e;

}

void popS(Sta S,int e)

{

if(S.top==S.base)

printf("\n棧空");

else

{

e=S.value[--S.top];

printf("\n請輸出出棧元素: %d",e);

}

}

void main()

{

Sta S;

int e,choose;

S.base=S.top=0;

do{

print();

printf("\n請輸入你的選項:");

scanf("%d",choose);

switch(choose)

{

case 1:

printf("\n請輸入入棧元素:");

scanf("%d",e);

pushS(S,e);

printS(S);

break;

case 2:

popS(S,e);

printS(S);

break;

case 3:

default:

break ;

}

if(choose==3)

break;

}while(1);

}

C語言入棧出棧操作的程序,希望有人為我解答

您好:

你是在學習數據結構方面的知識吧。

首先呢,你學習棧,要了解棧的定義,明白它是怎么一回事,就是去理解他的思想。

最后才去用代碼來體現出來。

棧是先進后出,其實是用代碼控制的,

其實你要他先進先出也可以。

你只要明白他的原理就行。

代碼,你可以理解為跟計算的一種對話的語言。

不用想的那么復雜。

就好比說話,你只要知道你要說什么就行(算法),而不用刻意明白要怎么說(語法)。

下面給我出我以前寫的代碼,關于棧的,順序棧,其實還有鏈棧。

/*???數據結構-棧???*/

/*???異常的細節處理還沒弄好*/

#include?iostream

#include?stdlib.h

#include?malloc.h

#define?len_chu_shi?50???//初始空間大小

#define?len_zeng_jia?10??//額外增加空間大小

#define?OK?0???????//正確

#define?OVER?-2?????//

#define?ERROR?-1???//

using?namespace?std;

typedef?int?elem_type;??????????//元素類型

typedef?int?function_type;??????//函數類型

typedef?struct?zhan

{

elem_type?*top;????//棧頂

elem_type?*base;???//棧底

int?len;???????????//當前空間大小

}zhan;????????????????//棧結構

function_type?Init_zhan(zhan?*exam);//初始化棧

function_type?Get_top(zhan?*exam,elem_type?*e);//獲取棧頂元素

function_type?Add_top(zhan?*exam,elem_type?*e);//增加棧頂元素

function_type?Delete_top(zhan?*exam,?elem_type?*e);//刪除棧頂元素

int?main(int?argc,char?*argv[])

{

zhan?*example?=?(zhan?*)malloc(sizeof(zhan));

Init_zhan(example);

return?OK;

}

function_type?Init_zhan(zhan?*exam)

{

exam-base?=?(elem_type?*)malloc(len_chu_shi*sizeof(elem_type));

if(!exam-base)??//分配失敗

exit(OVER);

exam-top?=?exam-base;

exam-len?=?len_chu_shi;

return?OK;

}//--end

function_type?Get_top(zhan?*exam,elem_type?*e)

{

if(!exam-base)

exit(OVER);

*e?=?*(exam-top?-?1);??//不能用自減運算符,那樣會改變棧頂指針的值

return?OK;

}//--end

function_type?Add_top(zhan?*exam,elem_type?*e)

{

if(exam-len?=?exam-top?-?exam-base)??//我個人覺得,如果?已經"",就已經數據溢出了,就應該報錯

exam-base?=?(elem_type?*)realloc(exam-base,(exam-len?+?len_zeng_jia)*sizeof(elem_type));

if(!exam-base)??//分配失敗

exit(OVER);

*(exam-top++)?=?*e;???//應該是先改變棧頂指針的內容,然后棧頂指針再自增

exam-len?+=?len_zeng_jia;

return?OK;

}//--end

function_type?Delete_top(zhan?*exam,?elem_type?*e)

{

if(!exam-base)??//空棧

exit(OVER);

*e?=?*(--exam-top);??//應該是棧頂指針先自減,然后獲取棧頂指針的內容

return?OK;

}//--end

數據結構實驗(用c語言寫) 棧的基本操作

//順序棧

#includestdio.h

#includestdlib.h

#includemalloc.h

#define STACK_INIT_SIZE 100;

#define STACKINCREMENT 10;

typedef struct

{

int *base;

int *top;

int stacksize;

}SqStack;

typedef int ElemType;

int InitStack(SqStack S) //為棧S分配存儲空間,并置S為空棧

{

int size = STACK_INIT_SIZE;

S.base=(int *)malloc(size*sizeof(ElemType));

if(!S.base)

return 0;

S.top=S.base; //置棧S為空棧

S.stacksize=STACK_INIT_SIZE;

return 1;

}

int GetTop(SqStack S,int e) //若棧不空,則用e返回S的棧頂元素

{

if(S.top==S.base) return 0;

e=*(S.top-1);

return 1;

}

int Push(SqStack S, int e) /*進棧函數,將e插入棧S中,并使之成為棧頂元素*/

{ if(S.top-S.base=S.stacksize) /*棧滿,追加存儲空間*/

{

int stackinvrement = STACKINCREMENT;

S.base=(ElemType *) realloc(S.base,(S.stacksize+stackinvrement)*sizeof(ElemType));

if(!S.base)

return 0; /*存儲分配失敗*/

S.stacksize+=STACKINCREMENT;

}

*S.top++=e;

return 1;

}

int Pop(SqStack S,int e)/*出棧函數,若棧S不空,則刪除S的棧頂元素,用e返回其值*/

{ if(S.top==S.base) return 0;

e=*--S.top;

return 1;

}

void OutputStack(SqStack S)

{int *q;

q=S.top-1;

for(int i=0;iS.top-S.base;i++)

{

printf("%3d ",*q);q--;}

}

void main()

{

int a,b,c ;

char m;

SqStack s;

InitStack(s);

printf("請輸入要進棧的元素個數是:");

scanf("%d",a);

printf("\n請輸入要進棧的%d個元素:",a);

for(b=0;ba;b++) {

scanf("%d",c);

Push(s,c); }

do { printf("\n");

printf("*********** 1.輸出棧的元素**********\n");

printf("*********** 2.取棧頂元素************\n");

printf("*********** 3.刪除棧頂元素**********\n");

printf("*********** 4.退出程序**********\n");

printf("\n請選擇一個字符:");

getchar();

scanf("%c",m);

switch(m) {

case '1': printf("\n輸出的棧為:");

OutputStack(s);

break;

case '2': GetTop(s,c);

printf("\n棧頂元素為:%d",c);

printf("\n輸出的棧為:");

OutputStack(s);

break;

case '3': Pop(s,c);

printf("\n刪除的棧頂元素:%d",c);

printf("\n輸出的棧為:");

OutputStack(s);

printf("\n");

break;

case '4':break;

default: printf("輸入的數字有錯,請重新選擇!\n"); break;

}

}while(m!='4');

}

//鏈棧

#includestdio.h

#includestdlib.h

typedef struct SNode

{

int data;

struct SNode *next;

}SNode,*LinkStack;

LinkStack top;

LinkStack PushStack(LinkStack top,int x) //入棧

{

LinkStack s;

s=(LinkStack)malloc(sizeof(SNode));

s-data=x;

s-next=top;

top=s;

return top;

}

LinkStack PopStack(LinkStack top) //退棧

{

LinkStack p;

if(top!=NULL)

{

p=top;

top=top-next;

free(p);

printf("退棧已完成\n");

return top;

}

else printf("棧是空的,無法退棧!\n"); return 0;

}

int GetStackTop(LinkStack top) //取棧頂元素

{

return top-data;

}

bool IsEmpty()//bool取值false和true,是0和1的區別,bool只有一個字節,BOOL為int型,bool為布爾型

{

return top==NULL ? true:false;

}

void Print()

{

SNode *p;

p=top;

if(IsEmpty())

{

printf("The stack is empty!\n");

return;

}

while(p)

{

printf("%d ", p-data);

p=p-next;

}

printf("\n");

}

void main()

{

int x,a,b;

char m;

do { printf("\n");

printf("###############鏈棧的基本操作##################\n");

printf("××××××××1.置空棧××××××××××\n");

printf("××××××××2.進棧×××××××××××\n");

printf("××××××××3.退棧×××××××××××\n");

printf("××××××××4.取棧頂元素××××××××\n");

printf("××××××××5.退出程序×××××××××\n");

printf("##############################################\n");

printf("\n請選擇一個字符:");

scanf("%c",m);

switch(m){

case '1':

top=NULL;

printf("\n棧已置空!");

break;

case '2':

printf("\n請輸入要進棧的元素個數是:");

scanf("%d",a);

printf("\n請輸入要進棧的%d個元素:",a);

for(b=0;ba;b++) {

scanf("%d",x);

top=PushStack(top,x); }

printf("進棧已完成!\n");

printf("\n輸出棧為:");

Print();

break;

case '3':

printf("\n操作之前的輸出棧為:");

Print();

top=PopStack(top);

printf("\n操作過后的輸出棧為:");

Print();

break;

case '4':

printf("\n輸出棧為:");

Print();

if(top!=NULL)

printf("\n棧頂元素是:%d\n",GetStackTop(top));

else

printf("\n棧是空的,沒有元素!");

break;

case '5':break;

default:

printf("\n輸入的字符不對,請重新輸入!");

break;

}

getchar();

}while(m!='5');

}

C語言板 數據結構 進棧 函數到底怎么寫

看一個棧的簡單實現,所有代碼都寫在一個頭文件中,實際的話,最好把聲明和實現分開。

#ifndef STACK_H

#define STACK_H

class Stack

{

public:

Stack();

Stack(const Stack copy);

Stack operator= (const Stack copy);

~Stack();

int getHeight() const;

bool isEmpty();

bool push(const int e);

bool pop(int e);

bool top(int e) const;

private:

int count;

int element[MAX_SIZE];

};

Stack::Stack()

{

count = 0;

}

Stack::Stack(const Stack copy)

{

this-count = copy.count;

for(int i = 0; i copy.count; i++)

{

element[i] = copy.element[i];

}

}

Stack Stack::operator =(const Stack copy)

{

if(copy != this)

{

this-count = copy.count;

for (int i = 0; i copy.count; i++)

{

element[i] = copy.element[i];

}

}

return *this;

}

Stack::~Stack()

{

count = 0;

}

int Stack::getHeight() const

{

return count;

}

bool Stack::isEmpty()

{

return count == 0;

}

bool Stack::push(const int e)

{

if (getHeight() == MAX_SIZE)

{

return false;

}

element[count++] = e;

return true;

}

bool Stack::pop(int e)

{

if (isEmpty() )

{

return false;

}

e = element[count--];

return true;

}

bool Stack::top(int e) const

{

e = element[count - 1];

return true;

}

#endif

標題名稱:編寫入棧函數c語言 c語言棧的用法
URL網址:http://www.yijiale78.com/article48/hihehp.html

成都網站建設公司_創新互聯,為您提供軟件開發手機網站建設定制開發微信公眾號自適應網站App設計

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

商城網站建設