C 输入末尾的预期声明或语句(单链表)
单链表 我不能运行这个程序( 单链接(ist) 我需要帮助 它总是给我“输入结束时的预期声明或语句”C 输入末尾的预期声明或语句(单链表),c,data-structures,C,Data Structures,单链表 我不能运行这个程序( 单链接(ist) 我需要帮助 它总是给我“输入结束时的预期声明或语句” #包括 #包括 类型定义结构节点{ int数据; 结构节点*link;}节点; node*root=NULL; void addafter(){ 节点*temp,*p; printf(“中心位置?\n”); int loc,i; int len=长度(); scanf(“%d”、&loc); 如果(loc>len){ printf(“错误\n”); } 否则{ p=根; 而(ilink,; i+
#包括
#包括
类型定义结构节点{
int数据;
结构节点*link;}节点;
node*root=NULL;
void addafter(){
节点*temp,*p;
printf(“中心位置?\n”);
int loc,i;
int len=长度();
scanf(“%d”、&loc);
如果(loc>len){
printf(“错误\n”);
}
否则{
p=根;
而(ilink,;
i++;}
temp=(node*)malloc(sizeof(node));
printf(“Entre节点数据?\n”);
scanf(“%d”,&temp->data);
temp->link=NULL;
温度->链接=p->链接;
p->link=temp;
}
无效删除(){
节点*温度;
int定位;
printf(“待删除的中心位置”);
scanf(“%d”和位置);
如果(位置>长度()){
printf(“错误\n”);
}
else if(位置==1){
温度=根;
root=temp->link;
temp->link=NULL;}
否则{
节点*K=根;
节点*q;
int i=1;
而(i<(位置-1)){
K=K->link;
i++;}
q=K->link;
K->link=q->link;
q->link=NULL;
免费(q);
}
}
空附加(){
节点*温度;
temp=(node*)malloc(sizeof(node));
printf(“Entre节点数据”);
scanf(“%d”,&temp->data);
temp->link=NULL;
if(root==NULL){
root=temp;}
否则{
节点*p;
p=根;
而(p->link!=NULL){
p=p->link;
}
p->link=temp;
}
整数长度(){
节点*t;
t=根;
整数计数器;
while(t!=NULL){
计数器++;
t=t->link;
}
返回计数器;
}
无效添加(){
节点*a;
a=(节点*)malloc(sizeof(节点));
printf(“Entre节点数据”);
scanf(“%d”,&a->data);
a->link=NULL;
if(root==NULL){
根=a;
}
否则{
a->link=root;
根=a;
}
}
无效显示(){
节点*温度;
温度=根;
if(temp==NULL){
printf(“列表为空\n”);
}
否则{
while(temp!=NULL){
printf(“%d-->”,temp->data);
温度=温度->链接;
printf(“\n\n”);
}
}
}
int main()
{node*root=NULL;
root=(node*)malloc(sizeof(node));
int-ch;
而(1){
printf(“链表操作!!”);
printf(“1.Append\n”);
printf(“2.Add\n”);
printf(“3.Add at after\n”);
printf(“4.Length\n”);
printf(“5.Display\n”);
printf(“6.Delet\n”);
printf(“7.Quit\n”);
printf(“Entre your choice\n”);
scanf(“%d”和“ch”);
开关(ch){
案例1:append();
打破
案例2:添加();
打破
案例3:addafter();
打破
案例4:长度();
打破
案例5:显示();
打破
案例6:删除();
打破
案例7:出口(1);
默认值:printf(“无效输入\n”);
}
}
}
显示错误
Build:Debug-in-single(编译器:GNU GCC编译器)
在函数“addafter”中
警告:函数“length”[-Wimplicit函数声明的隐式声明
在函数“append”中
110警告:“main”通常是非静态函数[-Wmain]|
在函数“main”中:|警告:变量“root”已设置但未使用[-Wunused但已设置变量]|
在函数“append”中:|
143 |错误:输入结束时需要声明或语句
在函数“addafter”中:|
143 |错误:输入结束时的预期声明或语句===生成失败:2个错误,3个警告(0分钟,0秒))由于代码中缺少一些右大括号,因此出现此错误。
请放一个右括号“}'位于addafter函数的末尾,以及append函数的结尾。如果这是您的全部代码,则您缺少
#include
语句以及类型和函数的定义。如果这不是您的全部代码,则编辑问题以提供一个,包括再现问题的完整源代码和准确的完整文本编译器消息的。这不是您正在编译的代码。它抱怨缺少节点
定义和缺少函数定义(例如追加
),但它没有抱怨:“输入结束时预期的声明或语句”
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int data;
struct node *link;}node;
node *root=NULL;
void addafter (){
node *temp,*p;
printf("Entre Location ?\n");
int loc,i ;
int len=length ();
scanf("%d",&loc);
if (loc > len ){
printf("Error \n");
}
else {
p=root;
while(i<loc){
p=p->link;
i++;}
temp=(node *)malloc(sizeof(node));
printf("Entre node data ?\n");
scanf("%d",&temp->data);
temp->link=NULL;
temp->link=p->link;
p->link=temp;
}
void delet (){
node *temp;
int location;
printf("Entre location to delet ");
scanf("%d",&location);
if (location > length()){
printf("Error \n");
}
else if (location==1){
temp=root;
root=temp->link;
temp->link=NULL;}
else {
node *K=root;
node *q;
int i=1;
while (i < (location-1)){
K=K->link;
i++;}
q=K->link;
K->link=q->link;
q->link=NULL;
free(q);
}
}
void append (){
node *temp;
temp=(node *)malloc(sizeof(node));
printf("Entre node data \n");
scanf("%d",&temp->data);
temp->link=NULL;
if (root==NULL){
root=temp;}
else {
node *p;
p=root;
while (p->link !=NULL){
p=p->link;
}
p->link=temp;
}
int length (){
node *t;
t=root;
int counter;
while (t!=NULL){
counter ++;
t=t->link;
}
return counter;
}
void add (){
node *a;
a=(node *)malloc(sizeof(node));
printf("Entre Node data \n");
scanf("%d",&a->data);
a->link=NULL;
if (root==NULL){
root=a;
}
else{
a->link=root;
root=a;
}
}
void Display (){
node *temp;
temp=root;
if (temp==NULL){
printf("List is empty \n");
}
else {
while (temp!= NULL){
printf("%d-->",temp->data);
temp=temp->link;
printf("\n\n");
}
}
}
int main()
{node *root=NULL;
root=(node *)malloc(sizeof(node));
int ch;
while (1){
printf("Linked List Operations !!");
printf("1.Append \n");
printf("2.Add \n");
printf("3.Add at after \n");
printf("4.Length \n");
printf("5.Display \n");
printf("6.Delet \n");
printf("7.Quit \n");
printf("Entre your choice \n");
scanf("%d",&ch);
switch (ch){
case 1 : append();
break;
case 2 : add();
break;
case 3 : addafter();
break;
case 4 : length();
break;
case 5 : Display();
break;
case 6 : delet ();
break;
case 7 : exit(1);
default: printf("Invalid input \n");
}
}
}