真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

編寫入棧函數(shù)c語言 c語言棧的用法

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

就用這堆函數(shù)就可以了,不懂再追問

平?jīng)鼍W(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,平?jīng)鼍W(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為平?jīng)錾锨в嗉姨峁┢髽I(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請找那個(gè)售后服務(wù)好的平?jīng)鲎鼍W(wǎng)站的公司定做!

#include string.h

#define MaxSize 100

int mystack[MaxSize];/* 第0個(gè)單元保存現(xiàn)在的長度 */

/* 初始化函數(shù) */

void init_stack(int* stack){

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

}

/* 入棧函數(shù) */

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];

}

/* 返回棧頂函數(shù) */

int top(int* stack){

if(stack[0]0){

return stack[ stack[0] ];

}

else{

printf("ERORR!\n");

return -1;

}

}

/* 出棧函數(shù) */

void pop(int* stack){

if(stack[0]0){

--stack[0];

}

else{

printf("ERORR!\n");

}

}

請用C語言編寫一個(gè)堆棧函數(shù)程序

//該程序簡單并可正確運(yùn)行,希望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請輸入你的選項(xiàng):");

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語言入棧出棧操作的程序,希望有人為我解答

您好:

你是在學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)方面的知識吧。

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

最后才去用代碼來體現(xiàn)出來。

棧是先進(jìn)后出,其實(shí)是用代碼控制的,

其實(shí)你要他先進(jìn)先出也可以。

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

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

不用想的那么復(fù)雜。

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

下面給我出我以前寫的代碼,關(guān)于棧的,順序棧,其實(shí)還有鏈棧。

/*???數(shù)據(jù)結(jié)構(gòu)-棧???*/

/*???異常的細(xì)節(jié)處理還沒弄好*/

#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;??????//函數(shù)類型

typedef?struct?zhan

{

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

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

int?len;???????????//當(dāng)前空間大小

}zhan;????????????????//棧結(jié)構(gòu)

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);??//不能用自減運(yùn)算符,那樣會改變棧頂指針的值

return?OK;

}//--end

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

{

if(exam-len?=?exam-top?-?exam-base)??//我個(gè)人覺得,如果?已經(jīng)"",就已經(jīng)數(shù)據(jù)溢出了,就應(yīng)該報(bào)錯(cuò)

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

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

exit(OVER);

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

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);??//應(yīng)該是棧頂指針先自減,然后獲取棧頂指針的內(nèi)容

return?OK;

}//--end

數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)(用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) /*進(jìn)棧函數(shù),將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)/*出棧函數(shù),若棧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("請輸入要進(jìn)棧的元素個(gè)數(shù)是:");

scanf("%d",a);

printf("\n請輸入要進(jìn)棧的%d個(gè)元素:",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請選擇一個(gè)字符:");

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("輸入的數(shù)字有錯(cuò),請重新選擇!\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的區(qū)別,bool只有一個(gè)字節(jié),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.進(jìn)?!痢痢痢痢痢痢痢痢痢痢羂n");

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

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

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

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

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

scanf("%c",m);

switch(m){

case '1':

top=NULL;

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

break;

case '2':

printf("\n請輸入要進(jìn)棧的元素個(gè)數(shù)是:");

scanf("%d",a);

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

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

scanf("%d",x);

top=PushStack(top,x); }

printf("進(jìn)棧已完成!\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語言板 數(shù)據(jù)結(jié)構(gòu) 進(jìn)棧 函數(shù)到底怎么寫

看一個(gè)棧的簡單實(shí)現(xiàn),所有代碼都寫在一個(gè)頭文件中,實(shí)際的話,最好把聲明和實(shí)現(xiàn)分開。

#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


網(wǎng)頁名稱:編寫入棧函數(shù)c語言 c語言棧的用法
轉(zhuǎn)載來于:http://weahome.cn/article/hihehp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部