中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

c語言棧的pop函數(shù) c語言pop

C語言寫Pop函數(shù)取棧的出錯

Pop函數(shù)改成這樣:

創(chuàng)新互聯(lián)公司服務熱線:13518219792,為您提供成都網(wǎng)站建設網(wǎng)頁設計及定制高端網(wǎng)站建設服務,創(chuàng)新互聯(lián)公司網(wǎng)頁制作領域十年,包括邊坡防護網(wǎng)等多個領域擁有豐富的網(wǎng)站運維經(jīng)驗,選擇創(chuàng)新互聯(lián)公司,為企業(yè)錦上添花。

int Pop (Stack * pstack, int * pname)

{

if(pstack-top=0)

{

return 0;

}

pstack-top--;

* pname = pstack-data[pstack-top];

return 1;

}

Push函數(shù)改成這樣:

int Push (Stack * pstack, int num)

{

if(pstack-top=Stack_size)

{

printf("Push Error!");

return 0;

}

pstack-data[pstack-top]=num;

pstack-top++;

return 0;

}

試試(原來那樣當元素達到最大數(shù)目時pstack-top就越界了)。

C語言 出棧操作Pop(struct SqStack * MyStack, ElemType *e

#include?stdio.h

#include?conio.h

#include?stdlib.h

#define?elemType?int /*?鏈棧元素數(shù)據(jù)類型?*/

#define?SNODE_SIZE?sizeof?(struct?sNode) /*?鏈棧結點空間大小?*/

#define?status?int /*?狀態(tài)型變量?*/

#define?OVERFLOW?-1 /*?內存溢出狀態(tài)碼?*/

#define?ERROR?0 /*?錯誤狀態(tài)碼?*/

#define?OK?1 /*?正確狀態(tài)碼?*/

/*?鏈棧結點存儲結構?*/

typedef?struct?sNode?{

elemType?data;

struct?sNode?*next;

}?sNode,?*sNodePtr;

/*?鏈棧存儲結構?*/

typedef?struct?linkStack?{

sNodePtr?top;?/*?棧頂指針?*/

}?linkStack;

/*?初始化?*/

/*?操作結果:構造一個帶頭結點的空鏈棧S?*/

void?initStack?(linkStack?*S)?{

S-top?=?(sNodePtr)?malloc?(SNODE_SIZE);?/*?產(chǎn)生頭結點,棧頂指針指向此頭結點?*/

if?(!S-top)?/*?內存分配失敗?*/

exit?(OVERFLOW);

S-top-next?=?NULL;

}

/*?銷毀?*/

/*?初始條件:鏈棧S已存在。操作結果:銷毀鏈棧S?*/

void?destroyStack?(linkStack?*S)?{

sNodePtr?p,?q;

p?=?S-top;?/*?p指向S的頭結點?*/

while?(p)?{

q?=?p-next;?/*?q指向p的下一個結點?*/

free?(p);?/*?回收p指向的結點?*/

p?=?q;?/*?p移動到下一個結點?*/

}?/*?直到?jīng)]有下一個結點?*/

}

/*?判斷鏈棧是否為空?*/

/*?初始條件:鏈棧S已存在。操作結果:若S為空鏈棧,則返回TRUE,否則返回FALSE?*/

status?stackIsEmpty?(linkStack?*S)?{

return?S-top-next?==?NULL;

}

/*?入棧?*/

/*?操作結果:在S的棧頂插入新的元素e?*/

status?push?(linkStack?*S,?elemType?e)?{

sNodePtr?p;

p?=?(sNodePtr)?malloc?(SNODE_SIZE);?/*?產(chǎn)生新結點?*/

if?(!p)?/*?內存分配失敗?*/

exit?(OVERFLOW);

p-data?=?e;

p-next?=?S-top-next;?/*?將新結點鏈接到原棧頂?*/

S-top-next?=?p;?/*?棧頂指向新結點?*/

}

/*?出棧?*/

/*?操作結果:刪除S的棧頂元素,并由e返回其值?*/

status?pop?(linkStack?*S,?elemType?*e)?{

sNodePtr?p;

if?(stackIsEmpty?(S))

return?ERROR;

p?=?S-top-next;?/*?p指向鏈棧的第一個結點?*/

*e?=?p-data;?/*?取出數(shù)據(jù)?*/

S-top-next?=?p-next;

free?(p);?/*?刪除該結點?*/

if?(S-top?==?p)?/*?棧為空?*/

S-top-next?=?NULL;

return?OK;

}

/*?打印棧內容?*/

/*?初始條件:鏈棧S已存在。操作結果:當棧不為空時,打印棧內容并返回OK,否則返回ERROR?*/

status?printStack?(linkStack?*S)?{

sNodePtr?p;

if?(stackIsEmpty?(S))?{

puts?("The?stack?is?empty!?");

return?ERROR;

}

p?=?S-top-next;

while?(p)?{

printf?("%d\t",?p-data);

p?=?p-next;

}

putchar?('\n');

return?OK;

}

int?main?(void)?{

linkStack?S;

elemType?e;?

elemType?a,?b,?c,?d;

a?=?1;?b?=?2;?c?=?3;?d?=?4;

initStack?(S);

push?(S,?a);

push?(S,?b);

push?(S,?c);

push?(S,?d);

puts?("Push?4?elements");

printf?("S:\t");

printStack?(S);

putchar?('\n');

pop?(S,?e);

puts?("Pop?1?element");

printf?("S:\t");

printStack?(S);

destroyStack?(S);

getch?();?/*?屏幕暫留?*/

return?0;

}

如有問題,可以點擊頭像聯(lián)系我

C語言中的pop函數(shù)是什么單詞的縮寫

關于 pop 函數(shù),我不太確定題主說的是哪個函數(shù),因為 C 語言的標準函數(shù)庫是沒有 pop 這個函數(shù)的。如果題主說的是 C++ 的 Stack 類中的 pop 函數(shù)的話,它并不是一個縮寫,因為從棧中取值的操作就叫做 pop。

然后就是查詢單詞原型的網(wǎng)站,因為 C 語言好多函數(shù)庫中的函數(shù)名都是按照很奇怪的方法縮寫的,所以基本上沒有一個專門查全稱的網(wǎng)站。不過題主可以參考

這個網(wǎng)站里面雖然沒有指出具體的縮寫方式,但是能很好地解釋 C 語言標準函數(shù)庫的所有函數(shù)的作用。通過它的介紹你應該會對函數(shù)的全稱有一個大概的理解。比如說這個針對 stdio.h 頭文件中所定義函數(shù)的解釋:

不光是 C 語言,C++ 的標準類庫的信息也可以在這個網(wǎng)站中找到。

“c語言”中,“pop函數(shù)”和“push函數(shù)”的作用分別是什么?

這個算是數(shù)據(jù)結構的內容講解的是一個叫做棧類型的數(shù)據(jù)結構,這個數(shù)據(jù)結構的特點就是后進先出--最后放進去的數(shù)據(jù)最先拿出來。pop函數(shù)就是拿出數(shù)據(jù)的操作,push是放入是數(shù)據(jù)的操作。

內容拓展:

pop函數(shù)呵push函數(shù)的使用:

#include stdio.h

#include unistd.h

#include pthread.h

void *clean(void *arg)

{

printf("cleanup: %s \n",(char *)arg);

return (void *)0;

}

void * thr_fn1(void * arg)

{

printf("chread 1 start \n");

pthread_cleanup_push((void *)clean,"thraed 1 first handler");

pthread_cleanup_push((void *)clean,"thread 1 second handler");

printf("thread 1 push complete \n");

if(arg)

{

return ((void *)1);

}

pthread_cleanup_pop(0);

pthread_cleanup_pop(0);

return (void *)1;

}

//輸出結果: chread 1 start -thread 1 push complte?

//push和pop框起來的代碼,不管正常退出還是異常退出,都將執(zhí)行清除函數(shù),但是存在特例:不包括return 退出。

當前名稱:c語言棧的pop函數(shù) c語言pop
網(wǎng)站路徑:http://www.rwnh.cn/article26/doohecg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導航、服務器托管App開發(fā)、外貿(mào)網(wǎng)站建設、搜索引擎優(yōu)化

廣告

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

營銷型網(wǎng)站建設
大同市| 江山市| 垣曲县| 美姑县| 宜黄县| 丘北县| 富川| 温泉县| 上犹县| 合阳县| 泽库县| 德钦县| 固阳县| 德清县| 沿河| 竹溪县| 金川县| 德格县| 垫江县| 安宁市| 阳高县| 呼伦贝尔市| 湘潭市| 博湖县| 孝感市| 五台县| 临潭县| 玛多县| 丰镇市| 江华| 库伦旗| 康乐县| 平昌县| 岳阳市| 四川省| 阳朔县| 台东县| 长治市| 永嘉县| 博兴县| 朝阳县|