代码如下:
#include <iostream>
using namespace std;
#define maxSize 100
typedef struct Sqlist
{
int data[maxSize];
int length;
}Sqlist;
int main()
{
//std::cout << "Hello World!\n";
int e=-1,p;
Sqlist a;
int Delete(Sqlist & L, int & e, int p);
void printList(Sqlist,int);
a.length = 8;
for (int i = 0; i < a.length; i++)
{
cin >> a.data[i];
}
printList(a,e);
cin >> p;
Delete(a, e, p);
printList(a,e);
return 0;
}
int Delete(Sqlist& L, int& e, int p)
{
if (p < 0 || p >= L.length)
{
return 0;
}
else
{
e = L.data[p];
for (int i = p; i < L.length - 1; i++)
{
L.data[i++] = L.data[i + 1];
}
L.length--;
return 1;
}
}
void printList(Sqlist L, int e)
{
cout << "The list is: ";
for (int i = 0; i < L.length; i++)
{
cout << L.data[i] << " ";
}
cout << ", e = " << e << endl;
}
我编程的过程之中遇到的几个问题:
1、一开始将删除的函数命名为delete, 老是报错, 后来发现是因为和C++的关键字delete冲突,
2、一开始没有将e初始化为-1,结果编译的时候在第一个printList(a,e);处报错: uninitialized variable 'e' used , 可见没有初始化或没有赋值的变量是不能作为函数形参的。