題目1:(難度1)
輸入乙個字串,判斷它是不是回文字串。
題目2:(難度2)
用兩個棧實現佇列
假設你擁有一種棧結構,使用兩個棧實現下面的佇列結構,要求支援 push 和 pop 操作:
typedef struct queue
queue;
第一題
#include #include #define len 100
void reversestring(char * input,char * output,int n);
int main(void)
void reversestring(char * input,char * output,int n)
stack;
typedef struct queue
queue;
queue createqueue(void);
void queuepush(queue *queue,int data);
int queuepop(queue *queue);
void stackpush(stack **top_ptr,int data);//push會改變棧頂,應使用二級指標,即若棧頂為top,則引數為&top
int stackpop(stack **top_ptr);
int stackisempty(stack *top);
int main()
for(i=0;i<5;i++)
printf("pop number %d from the queue\n",queuepop(&queue));
for(i=10;i<15;i++)
for(i=0;i<10;i++)
printf("pop number %d from the queue\n",queuepop(&queue));
return 0;
}queue createqueue(void)
void queuepush(queue *queue,int data)
int queuepop(queue *queue)
void stackpush(stack **top_ptr,int data)
int stackpop(stack **top_ptr)
int stackisempty(stack *top)
同學用陣列實現stack的第二題
#include #include #include #include #undef mprint
#define mdebug
#ifdef mdebug
# define mprint(fmt, args...) printf("file: %s, line: %d. "fmt, __file__, __line__, ##args);
#else
# define mprint(fmt, args...)
#endif // mdebug
//stack
typedef int element_t;
typedef struct mstack stack_t;
stack_t *stack_init(int n);
int stack_empty(stack_t *s);
int stack_full(stack_t *s);
void push(stack_t *s, element_t x);
element_t pop(stack_t *s);
//queue
typedef struct mqueue queue_t;
queue_t *queue_init(int n);
int queue_empty(queue_t *q);
int queue_full(queue_t *q);
void enqueue(queue_t *q, element_t x);
element_t dequeue(queue_t *q);
#define q_max 10
int main(int argc, char **argv)
printf("\ndequeue: ");
while (!queue_empty(q))
printf("\n");
return 0;
}stack_t *stack_init(int n)
s->stack_size = n;
s->stack_count = 0;
s->st = malloc(sizeof(*s->st)*s->stack_size);
if (null == s->st)
memset(s->st, 0, sizeof(*s->st)*s->stack_size);
return s;
}int stack_empty(stack_t *s)
int stack_full(stack_t *s)
void push(stack_t *s, element_t x)
}element_t pop(stack_t *s)
return s->st[--s->stack_count];
}queue_t *queue_init(int n)
q->q_size = n;
q->q_count = 0;
q->s1 = stack_init(q->q_size);
if (null == q->s1)
q->s2 = stack_init(q->q_size);
if (null == q->s2)
return q;
}int queue_empty(queue_t *q)
int queue_full(queue_t *q)
void enqueue(queue_t *q, element_t x)
while (!stack_empty(q->s2))
q->q_count ++;
push(q->s1, x);
}element_t dequeue(queue_t *q)
while (!stack_empty(q->s1))
q->q_count --;
return pop(q->s2);
}
用兩個棧實現佇列 用兩個佇列實現棧
劍指offer 面試題7 用兩個棧實現佇列。templateclass cqueue 我們試著用兩個棧來模擬佇列的操作,發現如下可行操作 完整 實現 面試題7 用兩個棧實現佇列 分別完成在隊尾插入結點和在隊頭刪除結點的功能。date 2014 06 27 include include includ...
用兩個棧實現佇列與用兩個佇列實現棧
pragma once要在標頭檔案的最開始加入這條雜注,就能夠保證標頭檔案只被編譯一次 pragma once是編譯器相關的,就是說即使這個編譯系統上有效,但在其他編譯系統也不一定可以,不過現在基本上已經是每個編譯器都有這個雜注了。用兩個棧實現佇列 每個模板函式的實現都需要加template模板列表...
用兩個棧實現佇列 與 用兩個佇列實現棧
用兩個棧實現乙個佇列的功能?要求給出演算法和思路 分析 入隊 將元素進棧a 出隊 判斷棧b是否為空,如果為空,則將棧a中所有元素pop,並push進棧b,棧b出棧 如果不為空,棧b直接出棧。用兩個佇列實現乙個棧的功能?要求給出演算法和思路 分析 入棧 將元素進佇列a 出棧 判斷佇列a中元素的個數是否...