欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

c語言棧操作庫函數(shù) C語言函數(shù)調(diào)用棧

數(shù)據(jù)結(jié)構實驗(用c語言寫) 棧的基本操作

//順序棧

創(chuàng)新互聯(lián)公司專注于射陽企業(yè)網(wǎng)站建設,響應式網(wǎng)站設計,商城開發(fā)。射陽網(wǎng)站建設公司,為射陽等地區(qū)提供建站服務。全流程按需規(guī)劃網(wǎng)站,專業(yè)設計,全程項目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務

#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) /*進棧函數(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("請輸入要進棧的元素個數(shù)是:");

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("輸入的數(shù)字有錯,請重新選擇!\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只有一個字節(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.進棧×××××××××××\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請輸入要進棧的元素個數(shù)是:");

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語言有沒有像c++一樣的stack庫函數(shù)?用來直接使用棧

C語言中包含一些標準的庫函數(shù),但是沒有像C++中的STL容器那部分全面的結(jié)構和函數(shù)。

在C語言中如果想使用棧,需要自己編寫代碼,如果是簡單的一次性應用,可以用數(shù)組模擬棧的功能,如果是在一個大項目中反復使用,可以自己寫一個stack的庫函數(shù)。

自定義的庫函數(shù)中,至少應該包含初始化、銷毀、入棧、出棧、取棧頂元素、判斷棧是否為空等操作。

棧的c語言實現(xiàn)基本操作

寫了一個鏈式棧,你看看

# include stdio.h

# include malloc.h

# include stdlib.h

typedef struct Node

{

int data;

struct Node *pNext;

}NODE, *PNODE;

typedef struct Stack

{

PNODE pTop;

PNODE pBottom;//pBottem是指向棧底下一個沒有實際意義的元素

}STACK, *PSTACK;

void init( PSTACK );

void push( PSTACK, int );

void traverse( PSTACK );

int pop( PSTACK, int * );

int empty( PSTACK pS );

int main( void )

{

STACK S;//STACK等價于struct Stack

int val;

init( S );//目的是造出一個空棧

push( S, 1 );//壓棧

push( S, 2 );

push( S, 3 );

push( S, 4 );

push( S, 5 );

push( S, 6 );

push( S, 7 );

traverse( S );//遍歷輸出

// clear( S ); //清空數(shù)據(jù)

// traverse( S );//遍歷輸出

if( pop( S, val ) )

{

printf( "出棧成功,出棧的元素是%d\n", val );

}

else

{

printf( "出棧失敗" );

}

traverse( S );//遍歷輸出出棧之后的元素

return 0;

}

void init( PSTACK pS )

{

pS-pTop = ( PNODE )malloc( sizeof( NODE ) );

if( NULL == pS-pTop )

{

printf( "動態(tài)內(nèi)存分配失敗!\n" );

exit( -1 );

}

else

{

pS-pBottom = pS-pTop;

pS-pTop-pNext = NULL;//或是pS-pBottom = NULL;

}

}

void push( PSTACK pS, int val )

{

PNODE pNew = ( PNODE )malloc( sizeof( NODE ) );

pNew-data = val;

pNew-pNext = pS-pTop;//pS-Top不能改為pS-pBottom

pS-pTop = pNew;

}

void traverse( PSTACK pS )

{

PNODE p = pS-pTop;

while( p != pS-pBottom )

{

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

p = p-pNext;

}

printf( "\n" );

}

int empty( PSTACK pS )

{

if( pS-pTop == pS-pBottom )

return 1;

else

return 0;

}

//把pS所指向的棧出棧一次,并把出棧的元素存入pVal形參所指向的變量中,如果出棧失敗,則返回false,否則true

int pop( PSTACK pS, int *pVal)

{

if( empty( pS ) )//pS本身存放的就是S的地址

{

return 0;

}

else

{

PNODE r = pS-pTop;

*pVal = r-data;

pS-pTop = r-pNext;

free( r );

r = NULL; //為什么要把r賦給NULL呢??

return 1;

}

}

//clear清空

void clear( PSTACK pS )

{

if( empty( pS ) )

{

return ;

}

else

{

PNODE p = pS-pTop;

PNODE q = p-pNext;

while( p != pS-pBottom )

{

q = p-pNext;

free( p );

p = q;

}

pS-pTop = pS-pBottom;

}

}

分享題目:c語言棧操作庫函數(shù) C語言函數(shù)調(diào)用棧
文章網(wǎng)址:http://aaarwkj.com/article6/doodiig.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護企業(yè)建站、網(wǎng)站建設、網(wǎng)站排名、全網(wǎng)營銷推廣、動態(tài)網(wǎng)站

廣告

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

成都做網(wǎng)站
亚洲区一区二区三区精品| 欧美大片黄片在线观看| 国产高清白丝免费在线观看| 国产毛片一区二区在线| 成人深夜福利视频在线| 女人的天堂啪啪啪av| 日韩一级久久精品理论| 亚洲成人大片免费在线观看| 91久久国产综合精品| 亚洲中文字幕精品视频乱码| 亚洲精品一区二区成人影院| 99热在线精品国产观看| 欧美日韩精品激情一区二区| 校花出白浆视频一区二区三区 | 亚洲国产一区二区精品| 91香蕉伊人综合久久麻豆| 国产日韩欧美在线精品| 欧美日韩人美精品一区在线| 免费欧美一级黄片播放| 免费国产三级在线观看| 丁香婷婷麻豆激情综合网| 麻豆精品国产一区二区91| 日韩美女后入式在线视频| 91福利免费在线看| 亚洲av十八禁在线播放| 欧美日韩精品偷拍一区二区| 欧美精品亚洲精品日韩经典| 亚洲综合偷拍欧美一区日韩| 我要看国产一级内射片| 国产成人av网站在线观看| 国产91黑丝在线视频| 亚洲免费视频区一区二| 日本欧美一区二区二区视频免费| 国产爆操美女在线观看| 男人的av天堂东京热| 欧美日韩一区二区综合在线视频| 国产原创av剧情在线播放| 日韩久久精品免费视频| 日韩色欧美色国产精品| 国产精品一区二区综合亚洲| 韩日男人女人性生活视频|