链表推送功能 #包括 #包括 #包括 结构堆栈节点 { int数据; 结构stackNode*nextPtr; }; 无效指令() { printf(“[1]在堆栈上推送一个值\n”); printf(“[2]从堆栈中弹出一个值\n”); printf(“[3]显示整个堆栈\n”); printf(“4]退出”); } 无效推送(结构堆栈ptr*topttr,内部信息) { 结构stackPtr*newPtr; newPtr=malloc(sizeof(struct stackNode)); 如果(newPtr!=NULL) { newPtr->data=info; newPtr->nextPtr=*topttr; *topttr=newPtr; } 其他的 { printf(“%d未插入没有可用内存”); } int main() { 结构StackNodePtr*stackPtr; stackPtr=NULL; 智力选择、价值; 做 { 指令(); printf(“\n输入您的选择:”); scanf(“%d”,选择(&C); 如果(选项==1) { printf(“为堆栈输入值”); } 如果(选项==2) { printf(“”); } 如果(选项==3) { printf(“”); } 如果(选项==4) { printf(“再见!”); 返回0; } }while(选项!=4); 系统(“暂停”); }

链表推送功能 #包括 #包括 #包括 结构堆栈节点 { int数据; 结构stackNode*nextPtr; }; 无效指令() { printf(“[1]在堆栈上推送一个值\n”); printf(“[2]从堆栈中弹出一个值\n”); printf(“[3]显示整个堆栈\n”); printf(“4]退出”); } 无效推送(结构堆栈ptr*topttr,内部信息) { 结构stackPtr*newPtr; newPtr=malloc(sizeof(struct stackNode)); 如果(newPtr!=NULL) { newPtr->data=info; newPtr->nextPtr=*topttr; *topttr=newPtr; } 其他的 { printf(“%d未插入没有可用内存”); } int main() { 结构StackNodePtr*stackPtr; stackPtr=NULL; 智力选择、价值; 做 { 指令(); printf(“\n输入您的选择:”); scanf(“%d”,选择(&C); 如果(选项==1) { printf(“为堆栈输入值”); } 如果(选项==2) { printf(“”); } 如果(选项==3) { printf(“”); } 如果(选项==4) { printf(“再见!”); 返回0; } }while(选项!=4); 系统(“暂停”); },c,list,stack,push,C,List,Stack,Push,我为我的链表和堆栈代码做了一个函数推送,但问题是它不起作用。函数推送中有巨大的错误。它有什么问题?它不允许使用malloc为什么 #include <stdio.h> #include <stdlib.h> #include <conio.h> struct stackNode { int data; struct stackNode *nextPtr; }; void instructions() { printf("[1]Pu

我为我的链表和堆栈代码做了一个函数推送,但问题是它不起作用。函数推送中有巨大的错误。它有什么问题?它不允许使用malloc为什么

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

struct stackNode
{
    int data;
    struct stackNode *nextPtr;
};


void instructions()
{
    printf("[1]Push a value on the stack\n");
    printf("[2]Pop a value off the stack\n");
    printf("[3]Display the whole stack\n");
    printf("[4]Exit");
} 

void push(struct stackPtr *topPtr, int info)
{
    struct stackPtr *newPtr;
    newPtr= malloc(sizeof(struct stackNode));
    if(newPtr !=NULL)
    {
        newPtr->data = info;
        newPtr->nextPtr=*topPtr;
        *topPtr=newPtr;
    }
    else
    {
        printf("%d not inserted no memory available");
    }

int main()
{
    struct StackNodePtr *stackPtr;
    stackPtr = NULL;
    int choice, value;
    do
    {   
        instructions();
        printf("\nEnter Your Choice: ");
        scanf("%d",&choice);
        if(choice == 1)
        {
            printf("Enter  a value for the stack");     
        }             
        if(choice == 2)
        {
            printf(" "); 
        }       
        if(choice == 3)
        {
            printf(" ");
        }
        if(choice == 4 )
        {
            printf("bye!");
            return 0;
        }
    } while(choice !=4);
    system("pause");
}
快乐编码


快乐编码。

这对你有用吗

// just precede the struct type with ... struct
struct stackNode* stackPtr = NULL;

这对你有用吗

// just precede the struct type with ... struct
struct stackNode* stackPtr = NULL;
这一行:

struct stackNode
{
   int data;
   struct stackNode *nextPtr;
};

int main()
{
    struct stackNode *stackPtr = NULL;
}
顺便说一下,您的typedef应该是:

typedef struct StackNode *StackNodePtr;
不知道您为什么反对使用
typedef
——这会使代码更具可读性。

这一行:

struct stackNode
{
   int data;
   struct stackNode *nextPtr;
};

int main()
{
    struct stackNode *stackPtr = NULL;
}
顺便说一下,您的typedef应该是:

typedef struct StackNode *StackNodePtr;


不知道你为什么反对使用
typedef
-这会使代码更具可读性。

这个怎么样?有人也可以转录吗?typedef struct stackNode stackNode;typedef struct stackNode*StackNodePtr;把它们拿出来吧?如果它们没有被使用,就没有被使用。这个怎么样?有人也可以转录吗?typedef struct stackNode stackNode;typedef struct stackNode*StackNodePtr;只要把它们拿出来就行了?如果它们没有被使用,它们就没有被使用。天哪,这就像是关于几乎相同事情的第六个问题……你真的在那个列表上磨蹭,不是吗?可能是OMG的重复,这就像关于同样的事情…你真的在那个列表上磨蹭,不是吗?你正在创建一个全局变量。你正在创建一个全局变量。我只是想保持它的简单性,这让我很困惑。对不起,我该如何解决这个问题?typedef struct stackNode stackNode;typedef stackNode*StackNodePtr;没有任何typedef?@Kyel:我认为e来自@John Källén、@pst和@0verbose的其他答案已经向您展示了如何在不使用
typedef
的情况下编写代码-如果这不是您想要的,那么您需要重新编写您的问题。所以,概括起来,它只是那样??我只想保持它的简单性,这让我很困惑。对不起,我该如何修复此问题?typedef struct stackNode StackNode;typedef StackNode*StackNodePtr;没有任何typedef?@Kyel:我认为来自@John Källén、@pst和@0verbose的其他答案已经向您展示了如何在没有
typedef
的情况下编写代码-如果这不是您想要的,那么您需要重新编写您的问题。总之,它只是这样的??这是一样的吗??struct stackNode*stackPtr;stackPtr=NULL;?是的,但我更喜欢答案中的样式,因为我喜欢显式初始化我的定义。这与此相同吗?struct stackNode*stackPtr;stackPtr=NULL;?是的,但我更喜欢答案中的样式,因为我喜欢显式初始化我的定义。