C 输入末尾的预期声明或语句(单链表)

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+

单链表

我不能运行这个程序( 单链接(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++;}
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");

  }
 }
}