初冀 2023-03-08 13:09 采纳率: 61%
浏览 31
已结题

线性表怎么在主函数里赋值

img


题目是这样的,我现在的问题就是主函数main里面怎么给线性表赋值为题目中的数


#include <iostream>
#include<stdlib.h>
#define max 100
typedef int element;
typedef struct sList {
    element data[max];
    int listLen;
}seqList;
void initialList(seqList* L) {
    L->listLen = 0;
}
int listLength(seqList* L) {
    return L->listLen;
}
int listDelete(seqList* L, int i) {
    int j,k;
    if (i<1 || i>L->listLen)
        return 0;
    else if (L->listLen <= 0)
        return 0;
    else {
        for (j = i; j < L->listLen; j++) {
            L->data[j - 1] = L->data[j];
            k++;
            L->listLen--;
        }
        return k;
    }
}
int repeat(seqList* L ) {
    int j=0,i;
    for (i = 0; i < L->listLen - 1; i++) {

        while (i)
        {
            if (L->data[i] == L->data[i + 1])
                j += listDelete(L, i + 1);
            else
                break;
        }
    }
    return j;
}
int main() {
    seqList* L = (112223455566778889);
     repeat(L);

我这代码还没写完,但是主函数里报错了,说找不到用户定义的文本运算符

  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2023-03-08 13:13
    关注

    你没有写给顺序表增加值的函数啊

    #include <iostream>
    #include<stdlib.h>
    #define max 100
    typedef int element;
    typedef struct sList {
        element data[max];
        int listLen;
    }seqList;
    void initialList(seqList* L) {
        L->listLen = 0;
    }
    int listLength(seqList* L) {
        return L->listLen;
    }
    int listAdd(seqList *L, int n){
    
        if(L->listLen >= max)
            return 0;
        L->data[L->listLen++] = n;
        return 1;
    }
    int listDelete(seqList* L, int i) {
        int j,k=0;
        if (i<1 || i>L->listLen)
            return 0;
        else if (L->listLen <= 0)
            return 0;
        else {
            for (j = i; j < L->listLen; j++) {
                L->data[j - 1] = L->data[j];
                k++;
            }
            L->listLen--;
            return k;
        }
        return 0;
    }
    int repeat(seqList* L ) {
        int j=0,i;
        for (i = 0; i < L->listLen-1; i++) {
            if (L->data[i] == L->data[i + 1])
            {
                j += listDelete(L, i + 1);
                i--;
            }
        }
        return j;
    }
    void listPrint(seqList *L)
    {
        for(int i=0;i<L->listLen;i++)
            printf("%d ",L->data[i]);
    }
    int main() {
        int a[18] = {1,1,2,2,2,3,4,5,5,5,6,6,7,7,8,8,8,9};
        seqList *L = new seqList;
        initialList(L);
        for(int i=0;i<18;i++)
            listAdd(L,a[i]);
         repeat(L);
         listPrint(L);
         delete L;
         system("pause");
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 3月16日
  • 已采纳回答 3月8日
  • 修改了问题 3月8日
  • 创建了问题 3月8日

悬赏问题

  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?