mirror of
https://github.com/krahets/hello-algo.git
synced 2025-01-23 22:40:25 +08:00
A bug fix.
This commit is contained in:
parent
d9686e57dd
commit
9a5ab776d6
@ -66,11 +66,12 @@ void push(ArrayQueue *queue, int num) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* 出队 */
|
/* 出队 */
|
||||||
void pop(ArrayQueue *queue) {
|
int pop(ArrayQueue *queue) {
|
||||||
int num = peek(queue);
|
int num = peek(queue);
|
||||||
// 队首指针向后移动一位,若越过尾部则返回到数组头部
|
// 队首指针向后移动一位,若越过尾部则返回到数组头部
|
||||||
queue->front = (queue->front + 1) % queue->queCapacity;
|
queue->front = (queue->front + 1) % queue->queCapacity;
|
||||||
queue->queSize--;
|
queue->queSize--;
|
||||||
|
return num;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Driver Code */
|
/* Driver Code */
|
||||||
@ -93,7 +94,7 @@ int main() {
|
|||||||
printf("队首元素 peek = %d\r\n", peekNum);
|
printf("队首元素 peek = %d\r\n", peekNum);
|
||||||
|
|
||||||
/* 元素出队 */
|
/* 元素出队 */
|
||||||
pop(queue);
|
peekNum = pop(queue);
|
||||||
printf("出队元素 pop = %d ,出队后 queue = ", peekNum);
|
printf("出队元素 pop = %d ,出队后 queue = ", peekNum);
|
||||||
printArray(queue->nums, queue->queSize);
|
printArray(queue->nums, queue->queSize);
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ bool isEmpty(ArrayStack *stack) {
|
|||||||
/* 入栈 */
|
/* 入栈 */
|
||||||
void push(ArrayStack *stack, int num) {
|
void push(ArrayStack *stack, int num) {
|
||||||
if (stack->size == MAX_SIZE) {
|
if (stack->size == MAX_SIZE) {
|
||||||
printf("stack is full.\n");
|
printf("栈已满\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
stack->data[stack->size] = num;
|
stack->data[stack->size] = num;
|
||||||
@ -52,7 +52,7 @@ void push(ArrayStack *stack, int num) {
|
|||||||
/* 访问栈顶元素 */
|
/* 访问栈顶元素 */
|
||||||
int peek(ArrayStack *stack) {
|
int peek(ArrayStack *stack) {
|
||||||
if (stack->size == 0) {
|
if (stack->size == 0) {
|
||||||
printf("stack is empty.\n");
|
printf("栈为空\n");
|
||||||
return INT_MAX;
|
return INT_MAX;
|
||||||
}
|
}
|
||||||
return stack->data[stack->size - 1];
|
return stack->data[stack->size - 1];
|
||||||
@ -60,10 +60,6 @@ int peek(ArrayStack *stack) {
|
|||||||
|
|
||||||
/* 出栈 */
|
/* 出栈 */
|
||||||
int pop(ArrayStack *stack) {
|
int pop(ArrayStack *stack) {
|
||||||
if (stack->size == 0) {
|
|
||||||
printf("stack is empty.\n");
|
|
||||||
return INT_MAX;
|
|
||||||
}
|
|
||||||
int val = peek(stack);
|
int val = peek(stack);
|
||||||
stack->size--;
|
stack->size--;
|
||||||
return val;
|
return val;
|
||||||
|
@ -67,12 +67,13 @@ int peek(LinkedListQueue *queue) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* 出队 */
|
/* 出队 */
|
||||||
void pop(LinkedListQueue *queue) {
|
int pop(LinkedListQueue *queue) {
|
||||||
int num = peek(queue);
|
int num = peek(queue);
|
||||||
ListNode *tmp = queue->front;
|
ListNode *tmp = queue->front;
|
||||||
queue->front = queue->front->next;
|
queue->front = queue->front->next;
|
||||||
free(tmp);
|
free(tmp);
|
||||||
queue->queSize--;
|
queue->queSize--;
|
||||||
|
return num;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 打印队列 */
|
/* 打印队列 */
|
||||||
@ -108,7 +109,7 @@ int main() {
|
|||||||
printf("队首元素 peek = %d\r\n", peekNum);
|
printf("队首元素 peek = %d\r\n", peekNum);
|
||||||
|
|
||||||
/* 元素出队 */
|
/* 元素出队 */
|
||||||
pop(queue);
|
peekNum = pop(queue);
|
||||||
printf("出队元素 pop = %d ,出队后 queue = ", peekNum);
|
printf("出队元素 pop = %d ,出队后 queue = ", peekNum);
|
||||||
printLinkedListQueue(queue);
|
printLinkedListQueue(queue);
|
||||||
|
|
||||||
|
@ -32,26 +32,16 @@ void delLinkedListStack(LinkedListStack *s) {
|
|||||||
|
|
||||||
/* 获取栈的长度 */
|
/* 获取栈的长度 */
|
||||||
int size(LinkedListStack *s) {
|
int size(LinkedListStack *s) {
|
||||||
assert(s);
|
|
||||||
return s->size;
|
return s->size;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 判断栈是否为空 */
|
/* 判断栈是否为空 */
|
||||||
bool isEmpty(LinkedListStack *s) {
|
bool isEmpty(LinkedListStack *s) {
|
||||||
assert(s);
|
|
||||||
return size(s) == 0;
|
return size(s) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 访问栈顶元素 */
|
|
||||||
int peek(LinkedListStack *s) {
|
|
||||||
assert(s);
|
|
||||||
assert(size(s) != 0);
|
|
||||||
return s->top->val;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 入栈 */
|
/* 入栈 */
|
||||||
void push(LinkedListStack *s, int num) {
|
void push(LinkedListStack *s, int num) {
|
||||||
assert(s);
|
|
||||||
ListNode *node = (ListNode *)malloc(sizeof(ListNode));
|
ListNode *node = (ListNode *)malloc(sizeof(ListNode));
|
||||||
node->next = s->top; // 更新新加节点指针域
|
node->next = s->top; // 更新新加节点指针域
|
||||||
node->val = num; // 更新新加节点数据域
|
node->val = num; // 更新新加节点数据域
|
||||||
@ -59,13 +49,17 @@ void push(LinkedListStack *s, int num) {
|
|||||||
s->size++; // 更新栈大小
|
s->size++; // 更新栈大小
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 出栈 */
|
/* 访问栈顶元素 */
|
||||||
int pop(LinkedListStack *s) {
|
int peek(LinkedListStack *s) {
|
||||||
if (s->size == 0) {
|
if (s->size == 0) {
|
||||||
printf("stack is empty.\n");
|
printf("栈为空\n");
|
||||||
return INT_MAX;
|
return INT_MAX;
|
||||||
}
|
}
|
||||||
assert(s);
|
return s->top->val;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 出栈 */
|
||||||
|
int pop(LinkedListStack *s) {
|
||||||
int val = peek(s);
|
int val = peek(s);
|
||||||
ListNode *tmp = s->top;
|
ListNode *tmp = s->top;
|
||||||
s->top = s->top->next;
|
s->top = s->top->next;
|
||||||
|
@ -56,11 +56,12 @@ class ArrayQueue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* 出队 */
|
/* 出队 */
|
||||||
void pop() {
|
int pop() {
|
||||||
int num = peek();
|
int num = peek();
|
||||||
// 队首指针向后移动一位,若越过尾部则返回到数组头部
|
// 队首指针向后移动一位,若越过尾部则返回到数组头部
|
||||||
front = (front + 1) % queCapacity;
|
front = (front + 1) % queCapacity;
|
||||||
queSize--;
|
queSize--;
|
||||||
|
return num;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 访问队首元素 */
|
/* 访问队首元素 */
|
||||||
@ -101,7 +102,7 @@ int main() {
|
|||||||
cout << "队首元素 peek = " << peek << endl;
|
cout << "队首元素 peek = " << peek << endl;
|
||||||
|
|
||||||
/* 元素出队 */
|
/* 元素出队 */
|
||||||
queue->pop();
|
peek = queue->pop();
|
||||||
cout << "出队元素 pop = " << peek << ",出队后 queue = ";
|
cout << "出队元素 pop = " << peek << ",出队后 queue = ";
|
||||||
printVector(queue->toVector());
|
printVector(queue->toVector());
|
||||||
|
|
||||||
|
@ -28,9 +28,10 @@ class ArrayStack {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* 出栈 */
|
/* 出栈 */
|
||||||
void pop() {
|
int pop() {
|
||||||
int oldTop = top();
|
int num = top();
|
||||||
stack.pop_back();
|
stack.pop_back();
|
||||||
|
return num;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 访问栈顶元素 */
|
/* 访问栈顶元素 */
|
||||||
@ -65,7 +66,7 @@ int main() {
|
|||||||
cout << "栈顶元素 top = " << top << endl;
|
cout << "栈顶元素 top = " << top << endl;
|
||||||
|
|
||||||
/* 元素出栈 */
|
/* 元素出栈 */
|
||||||
stack->pop();
|
top = stack->pop();
|
||||||
cout << "出栈元素 pop = " << top << ",出栈后 stack = ";
|
cout << "出栈元素 pop = " << top << ",出栈后 stack = ";
|
||||||
printVector(stack->toVector());
|
printVector(stack->toVector());
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ class LinkedListQueue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* 出队 */
|
/* 出队 */
|
||||||
void pop() {
|
int pop() {
|
||||||
int num = peek();
|
int num = peek();
|
||||||
// 删除头节点
|
// 删除头节点
|
||||||
ListNode *tmp = front;
|
ListNode *tmp = front;
|
||||||
@ -60,6 +60,7 @@ class LinkedListQueue {
|
|||||||
// 释放内存
|
// 释放内存
|
||||||
delete tmp;
|
delete tmp;
|
||||||
queSize--;
|
queSize--;
|
||||||
|
return num;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 访问队首元素 */
|
/* 访问队首元素 */
|
||||||
@ -100,7 +101,7 @@ int main() {
|
|||||||
cout << "队首元素 peek = " << peek << endl;
|
cout << "队首元素 peek = " << peek << endl;
|
||||||
|
|
||||||
/* 元素出队 */
|
/* 元素出队 */
|
||||||
queue->pop();
|
peek = queue->pop();
|
||||||
cout << "出队元素 pop = " << peek << ",出队后 queue = ";
|
cout << "出队元素 pop = " << peek << ",出队后 queue = ";
|
||||||
printVector(queue->toVector());
|
printVector(queue->toVector());
|
||||||
|
|
||||||
|
@ -42,13 +42,14 @@ class LinkedListStack {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* 出栈 */
|
/* 出栈 */
|
||||||
void pop() {
|
int pop() {
|
||||||
int num = top();
|
int num = top();
|
||||||
ListNode *tmp = stackTop;
|
ListNode *tmp = stackTop;
|
||||||
stackTop = stackTop->next;
|
stackTop = stackTop->next;
|
||||||
// 释放内存
|
// 释放内存
|
||||||
delete tmp;
|
delete tmp;
|
||||||
stkSize--;
|
stkSize--;
|
||||||
|
return num;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 访问栈顶元素 */
|
/* 访问栈顶元素 */
|
||||||
@ -89,7 +90,7 @@ int main() {
|
|||||||
cout << "栈顶元素 top = " << top << endl;
|
cout << "栈顶元素 top = " << top << endl;
|
||||||
|
|
||||||
/* 元素出栈 */
|
/* 元素出栈 */
|
||||||
stack->pop();
|
top = stack->pop();
|
||||||
cout << "出栈元素 pop = " << top << ",出栈后 stack = ";
|
cout << "出栈元素 pop = " << top << ",出栈后 stack = ";
|
||||||
printVector(stack->toVector());
|
printVector(stack->toVector());
|
||||||
|
|
||||||
|
@ -43,4 +43,4 @@
|
|||||||
|
|
||||||
本书倡导手脑并用的学习方式,在这一点上深受[《动手学深度学习》](https://github.com/d2l-ai/d2l-zh)的启发。在此向各位读者强烈推荐这本优秀的著作。
|
本书倡导手脑并用的学习方式,在这一点上深受[《动手学深度学习》](https://github.com/d2l-ai/d2l-zh)的启发。在此向各位读者强烈推荐这本优秀的著作。
|
||||||
|
|
||||||
衷心感谢我的父母,正是你们一直以来的支持与鼓励,让我有机会做这件富有趣味的事。
|
**衷心感谢我的父母,正是你们一直以来的支持与鼓励,让我有机会做这件富有趣味的事**。
|
||||||
|
Loading…
Reference in New Issue
Block a user