程式運行到“ initStack(TOP); //初始化鏈堆疊 ”這一行時總是報錯,停止了,不知道是不是結構體定義那邊出問題了
#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0
typedef struct node
{
int num;
struct node *next;
}LinkStackNode, LinkStack; //鏈表的一個個結點 鏈表
void initStack(LinkStack *top); //初始化鏈堆疊
int push(LinkStack *top, int n); //鏈堆疊進堆疊操作
void pop(LinkStack *top); //鏈堆疊出堆疊操作
int getTop(LinkStack *top, int *s); //讀取鏈堆疊堆疊頂元素
int main()
{
LinkStack *TOP;
int n;
int *data;
initStack(TOP); //初始化鏈堆疊
getchar();
getchar();
return 0;
}
void initStack(LinkStack *top) //初始化鏈堆疊
{
top = (LinkStack *)malloc(sizeof(LinkStack));
top->next = NULL;
}
uj5u.com熱心網友回復:
#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0
typedef struct node
{
int num;
struct node *next;
}LinkStackNode,LinkStack; //鏈表的一個個結點 鏈表
void initStack(LinkStack *top); //初始化鏈堆疊
int push(LinkStack *top, int n); //鏈堆疊進堆疊操作
void pop(LinkStack *top); //鏈堆疊出堆疊操作
int getTop(LinkStack *top, int *s); //讀取鏈堆疊堆疊頂元素
int main()
{
LinkStack *TOP;
int n;
int *data;
initStack(TOP); //初始化鏈堆疊
getchar();
getchar();
return 0;
}
void initStack(LinkStack *top) //初始化鏈堆疊
{
top = (LinkStack *)malloc(sizeof(LinkStack));
top->next = NULL;
if (!top)
{
printf("分配記憶體失敗!\n");
exit(1);
}
printf("初始化成功!\n");
}
并沒有報錯。把你的報錯資訊截圖看一下
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
什么事都沒有做,應該不會出錯uj5u.com熱心網友回復:
但是用法不對,引數可以改成*&或者回傳top,這樣修改不了topuj5u.com熱心網友回復:
#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0
typedef struct node
{
int num;
struct node *next;
}LinkStackNode,LinkStack; //鏈表的一個個結點 鏈表
void initStack(LinkStack **top); //初始化鏈堆疊
int push(LinkStack *top, int n); //鏈堆疊進堆疊操作
void pop(LinkStack *top); //鏈堆疊出堆疊操作
int getTop(LinkStack *top, int *s); //讀取鏈堆疊堆疊頂元素
int main()
{
LinkStack *TOP;
int n;
int *data;
initStack(&TOP); //初始化鏈堆疊
getchar();
getchar();
return 0;
}
void initStack(LinkStack **top) //初始化鏈堆疊
{
*top = (LinkStack *)malloc(sizeof(LinkStack));
(*top)->next = NULL;
if (!(*top))
{
printf("分配記憶體失敗!\n");
exit(1);
}
printf("初始化成功!\n");
}
需要用二重指標,一重指標不能把malloc的空間回傳。
我想程式在后面使用的時候出現的問題,因為TOP是一個野指標,即使是呼叫了初始化堆疊之后還是一個野指標,所以用二重指標,或者在C++編譯器里,可以用*&top作為形參,實參可以直接用TOP而不用加&
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/35888.html
標籤:C語言
上一篇:編程實作:從鍵盤輸入20個整數,求其平均值,然后輸出平均值以上的所有元素。
下一篇:求助一個C語言問題
