中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

溫州做網(wǎng)站建設(shè)公司百度sem

溫州做網(wǎng)站建設(shè)公司,百度sem,網(wǎng)站內(nèi)容過(guò)濾,移動(dòng)網(wǎng)站屏蔽目錄 一、棧的概念 二、棧的兩種實(shí)現(xiàn)方式 1.順序表實(shí)現(xiàn)棧 2.鏈表實(shí)現(xiàn)棧 三、棧的順序存儲(chǔ)結(jié)構(gòu)及其實(shí)現(xiàn) 1.棧的聲明 2.棧的初始化 3.棧的銷毀 4.棧的壓棧 5.棧的彈棧 6.棧的判空 7.返回棧頂元素 8.返回棧的長(zhǎng)度 四、棧的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)及其實(shí)現(xiàn) 1.棧的聲明 2.棧的…


目錄

一、棧的概念

二、棧的兩種實(shí)現(xiàn)方式

1.順序表實(shí)現(xiàn)棧

2.鏈表實(shí)現(xiàn)棧

三、棧的順序存儲(chǔ)結(jié)構(gòu)及其實(shí)現(xiàn)

1.棧的聲明

2.棧的初始化

3.棧的銷毀

4.棧的壓棧

5.棧的彈棧

6.棧的判空

7.返回棧頂元素

8.返回棧的長(zhǎng)度

四、棧的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)及其實(shí)現(xiàn)

1.棧的聲明

2.棧的初始化

3.棧的銷毀

4.棧的壓棧

5.棧的彈棧

6.棧的判空

7.返回棧頂元素

8.返回棧的長(zhǎng)度


一、棧的概念

  • 棧的定義:棧是一種特殊的線性表;但在概念上又有一些規(guī)定,棧只允許在一端進(jìn)行數(shù)據(jù)的插入與刪除的操作,被稱為棧頂,而另一端則被稱為棧底
  • 出棧(彈棧):在棧頂進(jìn)行數(shù)據(jù)的刪除
  • 入棧(壓棧):在棧底進(jìn)行數(shù)據(jù)的插入? ? ??
  • LIFO原則:棧中的數(shù)據(jù)服從后進(jìn)先出原則(last in first out)

二、棧的兩種實(shí)現(xiàn)方式

1.順序表實(shí)現(xiàn)棧

  • 設(shè)計(jì)思路:將數(shù)組下標(biāo)為0的位置作為棧底,而數(shù)組的最大下標(biāo)(即長(zhǎng)度減一)作為棧頂元素可能存在的位置;用top指向棧頂元素下一位置的索引
  • 壓棧:棧的壓棧操作,即為順序表的尾插
  • 彈棧:棧的彈棧操作,即為順序表的尾刪
  • 設(shè)計(jì)優(yōu)勢(shì):避免了數(shù)組增加刪除數(shù)據(jù)時(shí)候需要移動(dòng)數(shù)據(jù);壓棧與彈棧的時(shí)間復(fù)雜度為O(1)
  • 自身優(yōu)勢(shì):緩沖區(qū)的利用率高;用一段連續(xù)的物理地址來(lái)存儲(chǔ)數(shù)據(jù)
  • 缺點(diǎn):動(dòng)態(tài)順序表實(shí)現(xiàn)的棧需要擴(kuò)容,而擴(kuò)容會(huì)導(dǎo)致空間浪費(fèi)或性能消耗

2.鏈表實(shí)現(xiàn)棧

  • 設(shè)計(jì)思路:將單鏈表的尾部作為棧底,將鏈表的頭部作為棧頂;鏈表的頭指針指針棧頂元素的位置
  • 壓棧:棧的壓棧操作,即為鏈表的頭插
  • 彈棧:棧的彈棧操作,即為鏈表的頭刪
  • 設(shè)計(jì)優(yōu)勢(shì):避免了鏈表刪除數(shù)據(jù)結(jié)點(diǎn)的時(shí)候,需要找到該結(jié)點(diǎn)的前一個(gè)結(jié)點(diǎn);壓棧與彈棧的時(shí)間復(fù)雜度為O(1)
  • 自身優(yōu)勢(shì):沒(méi)有擴(kuò)容所帶來(lái)的空間的浪費(fèi)與性能的消耗
  • 缺點(diǎn):緩存利用率不如順序表高

三、棧的順序存儲(chǔ)結(jié)構(gòu)及其實(shí)現(xiàn)

1.棧的聲明

#pragma once#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<stdbool.h>
#include<assert.h>#define STDateType int typedef struct Stack
{STDateType* date;int top;int capacity;
}ST;void STInit(ST* st);
void STDestory(ST* st);
void STPush(ST* st, STDateType x);
void STPop(ST* st);
STDateType STTop(ST* st);
bool STEmpty(ST* st);
int STSize(ST* st);

2.棧的初始化

void STInit(ST* st)
{assert(st);st->date = NULL;st->capacity = st->top = 0;
}

3.棧的銷毀

void STDestory(ST* st)
{assert(st);free(st->date);st->date = NULL;st->top = 0;st->capacity = 0;
}

4.棧的壓棧

void STPush(ST* st, STDateType x)
{assert(st);if (st->top == st->capacity){size_t newcapacity = (st->capacity == 0 ? 4 : 2 * st->capacity);STDateType* tmp = (STDateType*)realloc(st->date, sizeof(STDateType) * newcapacity);if (tmp != NULL){st->date = tmp;st->capacity = newcapacity;}}st->date[st->top++] = x;
}

5.棧的彈棧

void STPop(ST* st)
{assert(st);assert(st->top > 0);st->top--;
}

6.棧的判空

bool STEmpty(ST* st)
{assert(st);return st->top == 0;
}

7.返回棧頂元素

STDateType STTop(ST* st)
{assert(st);assert(st->top > 0);return st->date[st->top - 1];
}

8.返回棧的長(zhǎng)度

int STSize(ST* st)
{assert(st);return st->top;
}

四、棧的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)及其實(shí)現(xiàn)

1.棧的聲明

#pragma once#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<stdbool.h>
#include<assert.h>typedef int StDateType;typedef struct StackNode
{StDateType date;struct StackNode* next;
}StackNode;typedef struct Stack
{StackNode* top;size_t size;
}Stack;void StackInit(Stack* st);//初始化
void StackDestory(Stack* st);//銷毀
void StackPush(Stack* st, StDateType x);//壓棧
void StackPop(Stack* st);//彈棧
StDateType StackTop(Stack* st);//讀取棧頂元素
bool StackEmpty(Stack* st);//判空
size_t StackSize(Stack* st);//返回棧的長(zhǎng)度

2.棧的初始化

void StackInit(Stack* st)
{assert(st);st->top = NULL;st->size = 0;
}

3.棧的銷毀

void StackDestory(Stack* st)
{assert(st);while (st->size > 0)StackPop(st);
}

4.棧的壓棧

void StackPush(Stack* st, StDateType x)
{assert(st);StackNode* Node = (StackNode*)malloc(sizeof(StackNode));if (!Node){perror("malloc mistake");exit(-1);}Node->date = x;Node->next = NULL;Node->next = st->top;st->top = Node;st->size++;
}

5.棧的彈棧

void StackPop(Stack* st)
{assert(st);assert(st->top);StackNode* tmp = st->top;  st->top = st->top->next;  free(tmp);  st->size--;  
}

6.棧的判空

bool StackEmpty(Stack* st)
{assert(st);return st->top == NULL;
}

7.返回棧頂元素

StDateType StackTop(Stack* st)
{assert(st);return st->top->date;
}

8.返回棧的長(zhǎng)度

size_t StackSize(Stack* st)
{assert(st);assert(st->top);return st->size;
}
http://www.risenshineclean.com/news/58845.html

相關(guān)文章:

  • 在線商城網(wǎng)站開(kāi)發(fā)代碼windows優(yōu)化大師是病毒嗎
  • 建立網(wǎng)站平臺(tái)需要那些技術(shù)鎮(zhèn)江seo快速排名
  • 正能量網(wǎng)站ip網(wǎng)絡(luò)營(yíng)銷推廣有哪些方法
  • 網(wǎng)站設(shè)計(jì) 聯(lián)系怎樣進(jìn)行網(wǎng)絡(luò)推廣效果更好
  • 做網(wǎng)站需要網(wǎng)站負(fù)責(zé)人推動(dòng)防控措施持續(xù)優(yōu)化
  • 提卡的網(wǎng)站怎么做查網(wǎng)站權(quán)重
  • 123邢臺(tái)招聘信息網(wǎng)鄭州企業(yè)網(wǎng)站seo
  • 微信開(kāi)發(fā)網(wǎng)站建設(shè)天津網(wǎng)站優(yōu)化
  • 網(wǎng)站建設(shè)調(diào)查問(wèn)卷天津網(wǎng)絡(luò)廣告公司
  • 如何做php分頁(yè)網(wǎng)站seo查詢愛(ài)站
  • 織夢(mèng)做的網(wǎng)站后臺(tái)頁(yè)優(yōu)化軟件
  • 專做壞消息的網(wǎng)站南寧seo產(chǎn)品優(yōu)化服務(wù)
  • 網(wǎng)站建設(shè)學(xué)院廣州網(wǎng)站建設(shè)公司
  • 網(wǎng)站建設(shè)哪個(gè)公司的好進(jìn)入百度知道首頁(yè)
  • 怎么用 c文件做網(wǎng)站頁(yè)面關(guān)鍵詞優(yōu)化
  • 企業(yè)網(wǎng)站建設(shè)方案書(shū)范文浙江新手網(wǎng)絡(luò)推廣
  • 做頭像網(wǎng)站長(zhǎng)沙網(wǎng)紅打卡景點(diǎn)排行榜
  • 無(wú)錫制作網(wǎng)站公司賣友情鏈接的哪來(lái)那么多網(wǎng)站
  • wordpress做的網(wǎng)站嗎整站seo外包
  • 外貿(mào)專業(yè)網(wǎng)站的公司江西網(wǎng)絡(luò)推廣seo
  • 廣州知名網(wǎng)站建設(shè)后臺(tái)管理便捷淘寶店鋪如何推廣
  • 中山 網(wǎng)站制作重慶seo優(yōu)化
  • 邯鄲網(wǎng)站建設(shè)公司哪家好建站軟件可以不通過(guò)網(wǎng)絡(luò)建設(shè)嗎
  • 怎么樣分析一個(gè)網(wǎng)站百度搜索引擎seo
  • b2b電子商務(wù)網(wǎng)站開(kāi)發(fā)在線排名優(yōu)化工具
  • 公司官網(wǎng)定制上海網(wǎng)站排名seo公司哪家好
  • ui設(shè)計(jì)是什么職位aso優(yōu)化是什么
  • 怎么修改網(wǎng)站源文件十大基本營(yíng)銷方式
  • 零食網(wǎng)站制作的建設(shè)大綱域名查詢138ip
  • 四大網(wǎng)站手機(jī)百度引擎搜索入口