#include <iostream>
#define Maxsize 20
using namespace std
;
typedef struct
{
int a
[Maxsize
];
int length
;
}Seqlist
;
void InitSeq(Seqlist
&L
){
L
.length
= 0;
}
int InsertSeq(Seqlist
& L
, int i
, int elem
)
{
if (L
.length
==Maxsize
||i
>L
.length
+1|| i
< 0) return 0;
for (int k
= L
.length
- 1; k
>= i
; k
--) {
L
.a
[k
] = L
.a
[k
- 1];
}
L
.a
[i
- 1] = elem
;
L
.length
++;
return 1;
}
int main() {
int k
= 1,add
=314;
Seqlist L
;
InitSeq(L
);
InsertSeq(L
, 1, add
);
cout
<<"add的值="<<add
<<" add的指针="<< &add
<<"\n";;
cout
<<"顺序表的长度="<< L
.length
<<"\n";
cout
<< "第"<<k
<<"个元素是"<<L
.a
[k
-1];
}
与数据的指针方式实现所不同的是,SeqList内的数据为非指针形式声明,因而赋值的过程简单了许多,同时,子函数的参数也简化为输入数值即可。
注意: 如果数据是指针方式的实现,那么主子程序之间传递的参数必须是指针。否则,如果我们传递数值、常数的话,当我们结束子程序时,在子程序内申请的用来存放数值的local临时地址会被编译器干掉,将不复存在,也就是说数值未被正确传递。