C++ STL新手问题 无法添加LIST到项目中

C++ STL新手问题 无法添加LIST到项目中,第1张

你好,你的问题仅仅是很简单的没有命名空间前缀,"std::", 简单将你列出的第2行,改成“std::list<int>Backpack”就行了。

头文件里定义的标识符是“std::list”,而不是“list”,后者不是模板类的定义,所以不能和尖括号连用,报第一个错C2143。同时当假定list是一个变量后,发现前面没类型定义,就报告了第2个错C4430。 我的编译器vs2013不会报告你的第3个错。

在cpp文件里,你可以在所有#include之后,加入一行“using namespace std”,来避免重复输入"std::"前缀; 如果你全cpp只用<list>,也可以只输入“using std::list”

这是我改的!~typedef struct

{

DataType list[MaxSize]

int size

}SeqList

void ListInitiate(SeqList *L)

{

L->size=0

}

int ListLength(SeqList L)

{

return L.size

}

int ListInsert(SeqList *L,int i,DataType e)

{

int k//循环变量 //r:插入数的位置,q表示插入的数字

if((i<1)||(i>L->size+2))//last为数组的最后一个元素的下标

{ printf("Error")

return 0

}

if(L->size>=MaxSize-1)

{

printf("ERROR")

return 0

}

for(k=L->sizek>=i-1k--)//k--:表示自i-1后的所有数都向后移动一个单位

L->list[k+1]=L->list[k]

L->list[i-1]=e

L->size++

return 1

}

int ListDelete(SeqList *L,DataType x)

{

int i,j

if(L->size<=0)

{

printf("顺序表已空无法删除\n")

return 0

}

else

{

for(i=0i<=L->sizei++)

{

if(x==L->list[i])

{

for(j=ij<L->size-1j++)

L->list[j]=L->list[j+1]

L->size--

i--

}

}

}

}

int ListGet(SeqList L,int i,DataType *x)

{

if(i<0||i>L.size-1)

{

printf("参数i不合法!\n")

return 0

}

else

{

*x=L.list[i]

return 1

}

}

#include<stdio.h>

#define MaxSize 100

typedef int DataType

#include"004.h"

void main()

{

SeqList L

int i,j,x,m,n

for(1)

{

printf("1.表初始化\n")

printf("2.表的元素个数\n")

printf("3.表元素的插入\n")

printf("4.表元素的删除\n")

printf("5.取表中元素\n")

printf("6.请输入 *** 作步骤的号码:")

scanf("%d",&m)

switch(m)

{

case 1:ListInitiate(&L)break

case 2:n=ListLength(L)break

case 3:

{

printf("请输入你想创建的数组长度:")

scanf("%d",&n)

L.size=n-1

printf("请输入数值:")

for(i=0i<=L.sizei++)

scanf("%d",&L.list[i])

printf("请输入你想插入数的位置:")

scanf("%d",&x)

printf("请输入你想插入的数:")

scanf("%d",&m)

printf("原数组添加后的数组为:\n")

ListInsert(&L,x,m)

for(j=0j<=L.sizej++)

printf("%d ",L.list[j])

printf("\n")

} break

case 4:

{

int s

printf("输入要删除的元素:")

scanf("%d",&s)

if(ListDelete(&L,s)==0)

printf("删除出现错误\n")

return

}break

case 5:

{

for(i=0i<ni++)

if(ListGet(L,i,&x)==0)

{

printf("错误的取数\n")

return

}

else

{

printf("正确的输出:%d\n",x)

}

break

}

default:printf("error\n")

}

}

}

我只把查询实现了!但是其它的也被我破坏了!如果你不会改的话可以在问我。其实只需要把数组多谢即便就好了!


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11836135.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存