报错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;
例如
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没有参数
解决后编译成功,没有出现你的错误
报错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等,哪里错了,怎么改呢的主要内容,如果未能解决你的问题,请参考以下文章
报错configure:error: no acceptable C compiler found in $PATH。。