gpt4 book ai didi

c - 需要帮助 : Stack ADT Linked list with VOID STAR implementation (C Programming)

转载 作者:太空宇宙 更新时间:2023-11-04 02:18:19 25 4
gpt4 key购买 nike

首先,我无法使用“代码示例”,因此我添加了如下所述的代码:

Header.h

    #ifndef MYHEADER_H
#define MYHEADER_H

#define EMPTY_TOS -1
#define MIN_STACK_SIZE 5
#define FALSE 0
#define TRUE 1


struct Node;
typedef struct Node *Stack;


void *PopStack(Stack);
void *TopOfStack(Stack);
void PushStack(void *val, Stack);
int IsEmptyStack(Stack);
int IsFullStack(Stack);

#endif

Header.c

    #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "myheader.h"

#define EMPTY_TOS -1
#define MIN_STACK_SIZE 5
#define FALSE 0
#define TRUE 1

struct Node
{
void *val;
struct Node *next;
};

void PushStack(void *x, Stack s)
{
printf("/n a1");
struct Node *insert;
printf("/n a2");
insert = (struct Node *) malloc(sizeof(struct Node));
printf("/n a3");

if (insert == NULL)
printf("Out of memory space!\n");
else
{ printf("\n a4");
insert->val = x;printf("\n a5");
insert->next= s;printf("\n a6");
s = insert;printf("\n a7");
}
printf("\n a8");
}

void *PopStack(Stack s)
{ printf("\n pop1");
struct Node *remove; printf("\n pop2");
void *val; printf("\n pop3");

if (IsEmptyStack(s))
{
printf("\nThe stack is empty!\n");
}
else
{ printf("\n pop4");
remove = s; printf("\n pop5");
val = remove->val; printf("\n pop67");
s = s->next; printf("\n pop7");
free(remove); printf("\n pop8");
}
return val; printf("\n pop9");
}

void *TopOfStack(Stack s)
{
if (!IsEmptyStack(s))
return s->next->val;
else
{
printf("\nThe stack is empty\n");
return 0;
}

}

int IsEmptyStack(Stack s)
{
printf("empty");
return (s == NULL);
}


int IsFullStack(Stack s)
{
return FALSE;
}

项目.cpp

int main()
{

Stack S = NULL;
int x = 5;
PushStack((void *)x, S);
int z = (int)PopStack(S);
printf("\n z = %d \n", z);



system("PAUSE");
return 0;
}

编辑:我想使用 PushStack 函数将 X 放入 S(tack) 中。然后我想获取存储在 S 中的值(5)并将其打印为整数 Z。但是我看到一个像 4247612 这样的数字,只要编译器窗口没有关闭,它就不会改变。

最佳答案

注意 PushStack((void *)x, S); int z = (int)PopStack(S); 会导致截断,因此,不能保证像这样的 puncasting 类型在所有情况下都有效:void * 不是一个神奇的类型可以容纳宇宙中每一个可能的值。 (如果您开始在现代实现中使用 double 而不是 int,它尤其会火上浇油。)但是它可能指向一个。

关于c - 需要帮助 : Stack ADT Linked list with VOID STAR implementation (C Programming),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4241828/

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