定义了一个数据类型list但一直说没定义是怎么回事啊,求大神给个解决方法

/*1.已知长度为n的线性表A采用顺序存储结构,请写一个时间复杂度为O(n),空间复杂度为O(1)的算法,该算法可删除线性表中所有值为item的数据元素。例如:item=7线性表A: 3,4,7,6,7,2,9,8,10,7,11,9,7,8,5结果输出:3,4,6,2,9,8,10,11,9,8,5*/#include<iostream>#include<stdlib.h>#include<stdio.h>#define max 100int data[max];void start(list l);void shunxv(list* l, int n);void dellist(list* l, int item);void printlist(list l);typedef struct list //顺序表的存储结构定义{ int data[max]; //顺序表占用的数组空间 int last; //记录顺序表中最后一个元素在数组中的位置 空表为0}LIST;void start(list l) //初始化顺序表 设置为空表{ l.last = 0; printf("顺序表已初始化为空表\n");}void shunxv(list* l, int n) //顺序插入{ int i = 0; int j; while (i < n) { scanf_s("%d", &j); l->data[i] = j; i++; } l->last = n;}void dellist(list* l, int item) //对指定元素进行删除{ int k; int i; printf("请输入需要删除的值:\n"); scanf_s("%d", &item); if (data[i] == item) { for (k = i; i <= l->last; k++) { l->data[k] = l->data[k + 1]; //后面元素依次向前覆盖前一个元素 } l->last--; //删除元素后表长减一 }}void printlist(list l){ int i = 0; while (i < l.last) { printf("%d", l.data[i]); i++; }}int main(){ list l; start(l); int n; int item; printf(""); scanf_s("%d", n); printf("输入数字个数:"); shunxv(&l, n); printf("向顺序表中输入数据:"); printlist(l); dellist(&l, item); printlist(l); return 0;}

第1个回答  2020-10-15
/*1.已知长度为n的线性表A采用顺序存储结构,请写一个时间复杂度为O(n),空间复杂度为O(1)的算法,
该算法可删除线性表中所有值为item的数据元素。
例如:item=7线性表A: 3,4,7,6,7,2,9,8,10,7,11,9,7,8,5
结果输出:3,4,6,2,9,8,10,11,9,8,5*/
#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#define max 100
//int data[max];
/*
void start(LIST);
void shunxv(LIST, int);
void dellist(LIST, int);
void printlist(LIST);
*/
typedef struct list //顺序表的存储结构定义
{
int data[max]; //顺序表占用的数组空间
int last; //记录顺序表中最后一个元素在数组中的位置 空表为0
}*LIST;

void start(LIST l) //初始化顺序表 设置为空表
{
l->last = 0;
printf("顺序表已初始化为空表\n");
}

void shunxv(LIST l, int n) //顺序插入
{
int i = 0;
int j;
while (i < n)
{
printf("向顺序表中输入第%d个数据:",i+1);
scanf("%d", &j);
l->data[i] = j;
i++;
}
l->last = n;
}
void dellist(LIST l) //对指定元素进行删除
{
int k,i,item;
printf("请输入需要删除的值:\n");
scanf("%d",&item);
for(k = 0; k < l->last; k++)
{
if(l->data[k] == item)
{
for(i = k;i<l->last-1;i++)
l->data[i] = l->data[i+1];
k--;
l->last--;
}
}

}

void printlist(LIST l)
{
int i = 0;
printf("遍历输出顺序表\n");
while (i < l->last)
{
printf("%d ", l->data[i]);
i++;
}
printf("\n");
}

int main()
{
struct list l;
start(&l);
int n;
printf("输入数字个数:");
scanf("%d",&n);
shunxv(&l, n);
printlist(&l);
dellist(&l);
printlist(&l);
return 0;
}
相似回答