gpt4 book ai didi

c - 在堆栈程序中使用双指针来引用数组索引位置

转载 作者:行者123 更新时间:2023-11-30 17:29:01 25 4
gpt4 key购买 nike

我有一个使用单指针完成的堆栈程序。现在我必须使用 double 类型的双指针来引用 double 类型数组中元素的索引。我制作了一个随机数生成器,我试图满足这 4 个条件。

  • 堆栈将采用 double 组的形式。
  • push() 的第三个参数和 pop() 的第二个参数的形式为double **top,即指向存储当前栈顶元素地址的指针。提示:在这些函数中,当堆栈更新时修改 *top。
  • 已为您创建了一个全局整型变量 myerror。它的值可以是 STACK_FULL、STACK_EMPTY 和 NORMAL。在push() 和pop() 函数中使用此变量来通知main() 函数操作的状态。
  • 在 main() 中测试您的函数。详细内容参见骨架代码stack.c。

我不知道如何将双指针传递给推送函数。那是 double 类型。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <time.h>

#define STACK_SIZE 10

#define STACK_FULL -2
#define STACK_EMPTY -1
#define NORMAL 0

int myerror = NORMAL;

void push(double [], // input/ouput - the stack
double, // input - data being pushed onto the stack
double **, // input/output - pointer to pointer to the top of stack
int); // constant - maximum capacity of stack

double // output - data being popped out from the stack
pop(double [], // input/output - the stack
double **); // input/output - pointer to pointer to top of stack

void push(double stack[], double item, double **top, int max_size)
{
if(**top==(max_size-1))
{
printf("Stack is Full\n");
return;
}
else
{
}
return;

}

double pop(double stack[],
double **top){
}

int main(){
double s[STACK_SIZE];
double *s_top = NULL;
int max_size=STACK_SIZE;
double **top;
top=&s_top;

srand(time(NULL));

int i;
double randNum=0.0;

for(i=0; i<STACK_SIZE; i++)
{
randNum = 94.0*(rand()/(RAND_MAX + 1.0));
randNum = randNum + 33.0;
printf("\nRandom double : %f\n ",randNum);
// push(s, randNum, top, max_size);
}
printf("-----------\n");


// Keep pushing doubles equivalent to chars randomly picked between '!'(33) and '~'(126)
// to the stack until it is full.
// Print each double before each pushing.

// Keep popping out doubles from the stack until it is empty
// Print each double after each popping.

// Repeat above until the user says 'no'.

return 0;
}

最佳答案

调用push时,传递栈顶指针的地址。看起来 s_top 是指向堆栈顶部的指针,因此在调用 push 时,您可以使用:

push(s,          /* the entire stack */
randNum, /* the number being added to the stack */
&s_top, /* pass the ADDRESS of the pointer which points to the top-of-stack */
max_size); /* the maximum size of the stack - could also just pass STACK_SIZE */

对这个问题+1,因为这是寻求家庭作业问题帮助的好方法。您并不是要求解决整个问题,只是就您不理解的问题寻求帮助。

分享并享受。

关于c - 在堆栈程序中使用双指针来引用数组索引位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25837409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com