
头文件里定义的标识符是“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")
}
}
}
我只把查询实现了!但是其它的也被我破坏了!如果你不会改的话可以在问我。其实只需要把数组多谢即便就好了!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)