报错c(179) : error C2275: 'LNODE' : illegal use of this type as an expression等,哪里错了,怎么改呢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了报错c(179) : error C2275: 'LNODE' : illegal use of this type as an expression等,哪里错了,怎么改呢相关的知识,希望对你有一定的参考价值。

#include <stdio.h>
#include"stdlib.h"
typedef struct node

int data;
struct node *next;
LNODE;
//函数声明
void printmenu();
LNODE* InitList();
void InsertList(LNODE *p,int pos,int num);
void deleteList(LNODE *p,int pos);
void turnAroundList(LNODE *p);
int findList(LNODE *p,int num);
int sumList(LNODE *p);
void unionList(LNODE *p,LNODE*q);
void printList( LNODE *p);

void printmenu()

printf("*************** menu ***************");
printf("* 1.插入数据 *");
printf("* 2.删除数据 *");
printf("* 3.反转链表 *");
printf("* 4.合并两个链表 *");
printf("* 5.输出链表 *");
printf("*************** menu ***************");

//定义一个单链表指针并初始化
LNODE* InitList()

LNODE *p=0;
p=(typedef LNODE *)malloc(sizeof(LNODE));
p->next=0;
return p;

//插入用户输入的数据
void InsertList(LNODE *p,int pos,int num)

int j=0;
LNODE *q;
while((p->next!=0) && (j<pos-1))

p=p->next;
j++;

if(j==pos-1)

q=(typedef LNODE *)malloc(sizeof(LNODE));
q->next=p->next;
p->next=q;
q->data=num;

else

printf("无法插入");


//删除第pos个数据
void deleteList(LNODE *p,int pos)

int j=0;
LNODE *q;
while(p->next!=0 && j<pos-1)

p=p->next;
j++;

q=p->next;
if(j==pos-1)

p->next=q->next;
q->next=q;


//反转链表
void turnAroundList(LNODE *p)

LNODE *q,*r;
q=p->next;
p->next=0;
while(q->next!=0)

r=q->next;
q->next=p;
p=q;
q=r;


//查找
int findList(LNODE *p,int num)

int a;
while(p->next!=0)

if(num==p->data)

a=1;
break;

else

p=p->next;
a=-1;


return a;

//求共有n个节点
int sumList(LNODE *p)

int sum=1;
int i;
while(p->next!=0)

i=i+1;

return sum;

//集合求并
void unionList(LNODE *p,LNODE*q)

int num,n;
p=p->next;
n=sumList(p);
while(q->next!=0)

num=p->data;
p=p->next;
if (findList(p,num)<0)

InsertList(p,n,num);
n=n+1;



//输出链表
void printList(LNODE *p)

while(p->next!=0)

printf("%d ",p->data);
p=p->next;

printf("\n");

main()

int a,b,pos,num;
printmenu();
LNODE *phead=0;
LNODE *qhead=0;
printf("enter your choice");
scanf("%d",&a);
while (a>0 && a<6)

phead=InitList(phead);
switch(a)
case 1:
printf("enter pos :");
scanf("%d",&pos);
printf("enter num :");
scanf("%d",&num);
InsertList(phead,pos,num);
printList(phead);break;
case 2:
printf("enter the position");
scanf("%d",&pos);
deleteList(phead,pos);
printList(phead);break;
case 3:
turnAroundList(phead);break;
case 4:
printf("创建另一个链表:\n");
printf("enter your choice");
scanf("%d",&b);
while (b>0 && b<6)

qhead=InitList(qhead);
switch(b)
case 1:
InsertList(qhead, pos,num);
printList(qhead);break;
case 2:
printf("enter the position");
scanf("%d",&pos);
deleteList(qhead,pos);
printList(qhead);break;

unionList(phead,qhead);
printList(qhead);break;

LNODE 已经被typedef关键字定义为 变量类型,所以在使用时前面不要加typedef关键字了。
例如
q=(typedef LNODE *)malloc(sizeof(LNODE));

这个typedef是多余的。追问

嗯,但是错误依旧在,错误提示:LNODE *phead=0; //'LNODE' : illegal use of this type as an expression和undeclared identifier,但是我前面已经定义过了

追答

去掉typedef后我这边编译,只出现如下错误:
1. sumList 实现有问题,sum永远为1
2. main中调用InitList有加了参数,实际InitList没有参数

解决后编译成功,没有出现你的错误

参考技术A 祢我!在线解答

报错configure:error: no acceptable C compiler found in $PATH。。

报错configure:error: no acceptable C compiler found in $PATH。。

 

查看日志:

出错原因:新安装的linux系统,没有gcc库

解决方案:使用yum install gcc,然后发现另外个坑,没有gcc

接着解决没有gcc:

 http://www.cnblogs.com/dieyaxianju/p/7582270.html

以上是关于报错c(179) : error C2275: 'LNODE' : illegal use of this type as an expression等,哪里错了,怎么改呢的主要内容,如果未能解决你的问题,请参考以下文章

LVS+Keepalived

gcc 编译安装

C语言试题179之实现堆排序算法

c_cpp 179.cpp

C语言试题179之实现堆排序算法

报错configure:error: no acceptable C compiler found in $PATH。。