[Error] ‘InsertNextNode‘ was not declared in this scope

本文讲述了在C语言中定义和实现单链表时,遇到的函数调用顺序问题。函数`ListInsert`试图调用`InsertNextNode`,但由于代码结构导致无法直接访问。通过调整函数定义顺序,解决了这个问题。
摘要由CSDN通过智能技术生成

下面是我当时出错的代码 :(一个简单的单链表)

#include<stdlib.h>
#include <stdio.h>
typedef struct LNode{	//定义单链表结点类型 
	int data;	//每个节点存放 一个元素 
	struct LNode *next;		//指针指向下一个节点 
}LNode,*LinkList; 
//定义一个单链表 
	bool InitList (LinkList &L){
		L=(LNode *)malloc(sizeof(LNode));//分配一个头结点
		if(L==NULL){
			return false;
		}
			
		L->next=NULL;	//头结点之后暂时没有结点
		return true; 
	} 
//	插入元素-按位序插入(带头结点) 
bool ListInsert(LinkList &L,int i,int e){ //在第i个位置插入元素e
	if(i<1)//检查i是否合法 
	{
		return false;
	 } 
	 LNode *p;   //指针p指向当前扫描到的结点 
	 int j=0;	//p当前指向的是第几个结点 
	 p=L;
	 while(p!=NULL &&j<i-1){//循环找到第i-1个结点 
	 	p=p->next;
	 	j++;
	 }
	 //以下代码可使用InsertNextNode函数代替 
//	 if(p==NULL){//i值不合法
//	 	return false;
//	 }
//	 LNode *s=(LNode *)malloc(sizeof(LNode));
//	 s->data=e;
//	 s->next=p->next;
//	 p->next=s;
//	 return true;
	return  InsertNextNode(p,e);
} 

 //后插操作:在p结点之后插入元素 e
 bool InsertNextNode(LNode *p, int e){
 	if (p==NULL){
 		return false;
	 }
 	LNode *s =(LNode*) malloc(sizeof(LNode));
 	if (s==NULL){ //内存分配失败
 		return false;
 	}
	
	 s->data = e;		//用结点s保存数据元素e
	 s->next=p->next;
	 p->next=s;			//将结点s连到p之后
	 
	 return true;
}
	 
 
	int main(){
		LinkList L;//声明一个指向单链表的指针 
//	初始化一个空表 
		InitList(L);
		//插入表头
		if(ListInsert( L,1,1)==true) {
			printf("表头元素是1\n");
		} 
		//插入表中-在第2个位置插入元素2
		 if(ListInsert( L,2,2)==true) {
			printf("第2个位置插入元素2\n");
		} 
		return 0; 
	}

出现这个错误的原因是函数调用时,子函数ListInsert调用另一个子函数InsertNextNode,而ListInsert函数的位置在上面无法调用下面的那个子函数,把两个函数位置调换一下即可。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值