棧和佇列常見的面試題

2021-08-21 16:40:42 字數 3106 閱讀 2081

1. 使用兩個棧實現乙個佇列

分析:佇列是先進先出的,而棧是先進後出的,所以需要用兩個棧去實現乙個佇列;乙個棧專門進行入佇列操作,另乙個棧負責出佇列操作。

標頭檔案:

stackandqueueinterview.h:

// 用兩個棧來封裝成乙個佇列

typedef

struct queuebystack

queuebystack;

void queuebystackinit(queuebystack* q);//初始化

void queuebystackpush(queuebystack* q, datatype data);//入佇列

int queuebystackempty(queuebystack* q);//判空

void queuebystackpop(queuebystack* q);//出佇列

int queuebystacksize(queuebystack* q);//獲取佇列中元素的個數

datatype queuebystackfront(queuebystack* q);//獲取隊頭元素(取s2的棧頂元素)

datatype queuebystackback(queuebystack* q);//獲取隊尾元素(取棧s1的棧頂元素)

void testqueuebystack();

原始檔:

初始化

void queuebystackinit(queuebystack* q)

入佇列

void

queuebystackpush(queuebystack* q, datatype

data)

判空

int queuebystackempty(queuebystack* q)

出佇列

void queuebystackpop(queuebystack* q)

}// 從s2中出元素

stackpop(&q->s2);

}

獲取佇列中元素的個數

int queuebystacksize(queuebystack* q)

獲取隊頭元素(取s2的棧頂元素)

datatype queuebystackfront(queuebystack* q)

}//取s2的棧頂元素

return stacktop(&q->s2);

}

獲取隊尾元素(取棧s1的棧頂元素)

datatype queuebystackback(queuebystack* q)

}//取s1的棧頂元素

return stacktop(&q->s1);

}

測試

void testqueuebystack()

2. 使用兩個佇列實現乙個棧

分析:佇列是先進先出,而棧是先進後出

標頭檔案:

//用兩個佇列來封裝成乙個棧

typedef

struct stackby2queue

stackby2queue;

void stackby2queueinit(stackby2queue* s);//初始化棧

void stackby2queuepush(stackby2queue* s, datatype data);//入棧

int stackby2queueempty(stackby2queue* s);//判空

void stackby2queuepop(stackby2queue* s);//出棧

datatype stackby2queuetop(stackby2queue* s);//獲取棧頂元素

int stackby2queuesize(stackby2queue* s);//獲取棧中元素的個數

void teststackby2queue();

原始檔:

初始化棧

void stackby2queueinit(stackby2queue* s)

入棧

void

stackby2queuepush(stackby2queue* s,datatype

data)

判空

int stackby2queueempty(stackby2queue* s)

出棧

void stackby2queuepop(stackby2queue* s)

queuepop(&s->q2);

}else

queuepop(&s->q1);

}}

獲取棧頂元素

datatype stackby2queuetop(stackby2queue* s)

獲取棧中元素的個數

int stackby2queuesize(stackby2queue* s)

測試

void teststackby2queue()

棧和佇列面試題

遞迴反轉乙個棧 void reverse stack s reverse s int tmp2 s.top s.pop reverse s s.push tmp1 reverse s s.push tmp2 遞迴排序乙個棧 void sort stack s sort s int tmp2 s.to...

棧和佇列面試題

1.使用兩個棧,實現乙個佇列。棧 先進後出,且只能從棧頂pop出資料。佇列 先進先出,對頭pop資料,隊尾push資料。如下 include template class myqueue void pop else if stack2.empty private stack stack1 stack...

棧和佇列面試題

採用順序棧實現棧基本操作 採用鏈式佇列實現佇列基本操作 define maxsize100 typedef int sdatatype typedef struct stack stack typedef struct minstack minstack void stackinit stack s...