【overcome error】dereferencing pointer to incomplete type

@

前言

这个问题是我在学习数据结构链栈部分遇到的,英文报错如题所示,中文意思是:取消引用不完整类型的指针,在百度一圈也没明白,(百度搜索,看一个和全看基本一样,因为内容都一样嘛)

解决

代码情况

//定义
typedef struct
{
	ElemType data;
	struct LinkedStackNode* next;
}LinkedStackNode, *Linknode;

//读栈顶
/*
初始条件:链栈已存在,且至少有一个元素
*/
int StackTop(Linknode top, int* x)
{
	if(top->data == 0)
		return -1;
	*x = top->next->data;
	return 1;
}

分析问题

取消引用不完整类型的指针
这里的意思大概是有不完整的指针,结构体和指针都属于引用类型,而结构体内部定义是完整的,所以不完整的只有结构体本身,即:

//定义
//typedef struct 修改为:
typedef struct LinkedStackNode
{
	ElemType data;
	struct LinkedStackNode* next;
}LinkedStackNode, *Linknode;

{
	ElemType data;
	struct LinkedStackNode* next;
}LinkedStackNode, *Linknode;

//读栈顶
/*
初始条件:链栈已存在,且至少有一个元素
*/
int StackTop(Linknode top, int* x)
{
	if(top->data == 0)
		return -1;
	*x = top->next->data;
	return 1;
}

尾声

说这么多的目的并不是证明这个是我原创的,只是提供一种排除的思路。

posted @ 2021-12-31 10:39  码农要战斗  阅读(120)  评论(0编辑  收藏  举报