小咕咚吃棉花糖 2021-09-28 21:39 采纳率: 40%
浏览 33
已结题

我照着teacher给的这段代码打出来为啥编译不过

大二,刚学不懂为啥在C语言的环境下,这个没编译通过,显示有很多问题,无法运行。求告知 拜托啦

/文件名:1-1-blank.cpp/
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 50
typedef char ElemType;
typedef struct
{
ElemType elem[MaxSize];
int length;
} SqList;/顺序表类型定义/
void InitList(SqList *&L)/初始化顺序表L/
{
L=(SqList *)malloc(sizeof(SqList));//使用malloc函数给L分配所需的内存空间
L->length=0;//L的长度赋值为0
}
void DestroyList(SqList *L)/释放顺序表L/
{
free(L);//用free函数释放掉L
}
int ListEmpty(SqList *L)/判断顺序表L是否为空表/
{
return(L->length==0);//用return返回判断值
}
int ListLength(SqList *L)/返回顺序表L的元素个数/
{
return(L->length);//用return返回L的元素个数
}
void DispList(SqList *L)/输出顺序表L/
{
int i;
if (ListEmpty(L)) return;//判断L是否为空
for(i=0;ilength;i++)//用for语句来输出顺序表L
printf("%c",L->elem[i]);
printf("\n");
}
int GetElem(SqList *L,int i,ElemType &e)/获取顺序表L中第i个元素/
{
if(i<1 || i>L->length)//判断i的值是否符合要求
return 0;
e=L->elem[i-1]//e的值赋值为顺序表L中第i个元素
return 1;
}
int LocateElem(SqList *L, ElemType e)/在顺序表L中查找元素e/
{
int i=0;
while (ilength && L->elem[i]!=e) i++;//寻找匹配i,i必须小于顺序表L,并且i的位置的值正好是e
if (i>=L->length)
return 0;
else
return i+1;//返回位置
}
int ListInsert(SqList *L,int i,ElemType e)/在顺序表L中第i个位置上插入元素e/
{
int j;
if(i<1 || i>L->length+1)//判断i的值是否符合要求
return 0;
i--; /将顺序表位序转化为elem下标/
for(j=L->length;j>i;j--)/用for语句将elem[i]及后面元素后移一个位置/
L->elem[j]=L->elem[j-1];
L->elem[i]=e;
L->length++;

return 1;

}
int ListDelete(SqList *L,int i,ElemType &e)/顺序表L中删除第i个元素/
{
int j;
int j;//判断i的值是否符合要求
if(i<1 || i>L->length)
return 0;
i--; /将顺序表位序转化为elem下标/
e=L->elem[i];/将顺序表L中删除第i个元素,并将所有元素都上移一位/
for(j=i;jlength-1;j++)
L->elem[j]=L->elem[j+1];
L->length--;

return 1;

}
void main()
{SqList *L;
ElemType e;
printf("(1)初始化顺序表L\n");
InitList(L);
printf("(2)依次采用尾插入法插入a,b,c,d,e元素\n");
ListInsert(L,1,'a');
ListInsert(L,2,'b');
ListInsert(L,3,'c');
ListInsert(L,4,'d');
ListInsert(L,5,'e');
printf("(3)输出顺序表L:");
DispList(L);
printf("(4)顺序表L长度=%d\n", ListLength(L));
printf("(5)顺序表L为%s\n",(ListEmpty(L)?"空":"非空"));
GetElem(L,3,e);
printf("(6)顺序表L的第3个元素=%c\n",e);
printf("(7)元素a的位置=%d\n",LocateElem(L,'a'));
printf("(8)在第4个元素位置上插入f元素\n");
ListInsert(L,4,'f');
printf("(9)输出顺序表L:");
DispList(L);
printf("(10)删除L的第3个元素\n");
ListDelete(L,3,e);
printf("(11)输出顺序表L:");
DispList(L);
printf("(12)释放顺序表L\n");
DestroyList(L);
system("pause");
}

编译器用的 visual c++2010 /codeblocks这个编译器也用 拜托啦求告诉 谢谢

  • 写回答

2条回答 默认 最新

  • yangbocsu Java领域新星创作者 2021-09-28 21:45
    关注

    试试这个

    
    
    #include <stdio.h>
    #include <stdlib.h>
    
    /*预定义常量和类型*/
    /*函数结果状态码*/
    #define     TRUE    1
    #define     FALSE   0
    #define     OK      1
    #define     ERROR       0
    #define     INFEASIBLE  -1
    #define     OVERFLOW    -2
    
    /*Status 是函数的类型,其值是函数结果状态代码*/
        
    typedef int Status;
    typedef char ElemType;  //单个元素类型
    
    typedef struct LNode        //声明结点的类型和指向结点的指针类型
    {
        ElemType data;            //结点的数据域
        struct LNode *next;        //结点的指针域
    }Lnode,*LinkList;             //LinkList为指向结构体Lnode的指针类型
    
    /*0 初始化链表*/
    Status InitList_L(LinkList *L) //LinkList *L用c语言表示就是指向指针的指针
    { 
        *L =(LinkList)malloc(sizeof(Lnode));          
        (*L)->next =NULL; 
        (*L)->data =0;
       return OK; 
    } 
    /*1 判断链表是否为空*/
    int ListEmpty(LinkList L) //若L为空表, 则返回1,否则返回0
    { 
        if(L->next) //非空
            return 0;
        else
            return 1; 
    
    }
    /*2 链表的销毁:链表销毁后不存在*/
    Status DestroyList_L(LinkList *L)//销毁单链表L
    { 
        LinkList p; //或 LinkList p;
        while(*L) 
        {
            p=*L;
            *L=(*L)->next;
            free(p);
        }
       return OK; 
    }  
    /*3 清空链表*/
    Status ClearList(LinkList *L)//将L重置为空表
    {
        Lnode *p,*q; //或LinkList p,q;
        p=(*L)-> next; 
        while(p) 
        { 
            //没到表尾
            q=p-> next;
            free(p);
            p=q;
        }
        (*L)-> next= NULL; //头结点指针域为空
        return OK;
    }
    /*4 求单链表L的表长*/
    int ListLength_L(LinkList *L) //返回L中数据元素个数
    {
        LinkList p;
        p=(*L)->next;
        //p指向第一个结点
        int i=0;
        while(p)      //遍历单链表,统计结点数
        {
            i++;
            p=p-> next;
        }
        return i;
    }
    
    /**/
    /**/
    
    
    int main(int argc, char const *argv[])
    {
        LinkList L1; //通常我们定义指向头节点的指针,它就代表整个链表
        printf("sizeof(L1) = %d\n",sizeof(L1));  
        InitList_L(&L1); //初始化链表 
        printf("L1->next = %d\n",L1->next); 
        printf("L1->data = %d\n",L1->data);
        
        printf("ListEmpty = %d\n",ListEmpty(L1));
        printf("ClearList = %d\n",ClearList(&L1));
        printf("sizeof(L1) = %d\n",sizeof(L1)); 
    
        printf("L1->next = %d\n",L1->next); 
        printf("L1->data = %d\n",L1->data);
        printf("ListLength_L = %d\n",ListLength_L(&L1));
        return 0;    
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月6日
  • 已采纳回答 9月28日
  • 修改了问题 9月28日
  • 创建了问题 9月28日

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)