typedef struct
{
DataType data[ListSize];
DataType length;
}SeqList 上面內容換到別處就會在下一行報這個錯誤;
void main(){
error C2144: syntax error : missing ';' before type 'void'
fatal error C1004: unexpected end of file found
在SeqList后面加上分號錯誤更多 是不是 在SWITCH后面呼叫函式也有問題,。。 剛學資料結構好南。。
如下是完整的代碼
#define ListSize 20
#include<stdio.h>
#include<stdlib.h>
typedef int DataType;
void InitList();
void lastinto();
void findone();
int sureinto();
void watchall();
void ClearList();
void alter();
int delsure();//10
typedef struct
{
DataType data[ListSize];
DataType length;
}SeqList
void main(){
int i,s=1,e,z;
while(s){
printf("請輸入想要實作的操作:\n");
printf("-----------------------------------\n");
printf("|1:新建一個表\n |");
printf("|2:尾插法插入資料 \n |");
printf("|3:指定地點插入資料 \n |");
printf("|4:洗掉指定地點位置\n |");//20
printf("|5:修改指定地點位置\n |");
printf("|6:查找資料\n |");
printf("|7:查看順序表\n |");
printf("|8:清空順序表\n |");
printf("|9:退出\n |");
printf("-----------------------------------\n");
scanf("%d",&i);
if(i<0||i>8){
printf("error");
}//30
switch(i){
case 1:InitList(L);break;
case 2:scanf("%d",&e); lastinto(L,e); break;
case 3:scanf("%d",&e); scanf("%d",&z);sureinto(L,e,z); break;
case 4:scanf("%d",&e); scanf("%d",&z); delsure(L,e,z);break;
case 5: scanf("%d",&e); scanf("%d",&z);alter(L,e,z);break;
case 6: scanf("%d",&e); findone(L,e);break;
case 7: watchall(L);break;
case 8: ClearList(L);break;
case 9: s=0; break;//40
}
}
}
void InitList(SeqList L){
if (L->length==0){
return;
}
L->length = 0;
}
void lastinto(SeqList L, DataType e){
if (L->length==ListSize)//60
{
printf("順序表已滿,不能插入!\n");
}
L->data[L->length]=e;
L->length++;
}
int sureinto(SeqList L,DataType e,int z){
if (z<1||z>L->length)
{//70
printf("插入位置不合法!\n");
return 0;
}
if (L->length == ListSize)
{
printf("順序表已滿,不能插入!\n");
}
int x=L->length,k;
for (k=z;k<= L->length; k++)
{//80
L->data[x] = L->data[x-1];
x--;
}
L->data[z-1] = e;
L->length++;
return 1;
}
int delsure(SeqList L,DataType* e,int z){
int k,x;
if(z>L->length||L->length<1){//90
printf("error");
return 0;
}
*e=L->data[z-1];
for (k=z;k<= L->length; k++)
{
L->data[x-1] = L->data[x];
x++;
}
L->length--;//100
return *e;
}
void alter(SeqList L,DataType e,int z){
if(z<1||z>L->length+1){
printf("error");
}
else{
L->data[z-1]=e;
}
}//110
void ClearList(SeqList L)
{
L->length=0;
}
void watchall(SeqList L){int k;
for (k = 0; k < L->length; k++)
{
printf("%d", L->data[k]);
}
printf("\n");//120
}
void findone(SeqList L,DataType e){
int k; int l=0;
for(k=0;k<L->length;k++){
l++;
if(L->data[k]==e){
printf("下標為%d",l);
}
}
}
uj5u.com熱心網友回復:
}SeqList ;uj5u.com熱心網友回復:
加上分號 就會報很多錯 順便麻煩問下我的主函式還沒有初始化順序表L 呼叫函式初始化順序表帶參L可以嗎
uj5u.com熱心網友回復:
void InitList(SeqList *L){uj5u.com熱心網友回復:
typedef struct{
DataType data[ListSize];
DataType length;
}SeqList
改成
struct SeqList
{
DataType data[ListSize];
DataType length;
};
同時把它移到 typedef int DataType; 的后面且修改函式宣告:
typedef int DataType;
struct SeqList
{
DataType data[ListSize];
DataType length;
};
void InitList(SeqList L);
void lastinto(SeqList L, DataType e);
int sureinto(SeqList L,DataType e,int z);
int delsure(SeqList L,DataType* e,int z);
void alter(SeqList L,DataType e,int z);
void ClearList(SeqList L);
void watchall(SeqList L);
void findone(SeqList L,DataType e);
uj5u.com熱心網友回復:
與版主商榷,印象中出錯的原因應該是在對struct使用typedef時,struct應當使用有名結構,而樓主使用的是無名結構。轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/25236.html
標籤:基礎類
上一篇:有沒有真正的大神來解決一下問題
