因为脱离C语言的学习已有几年之久,最近才重新回来学习数据结构。有些不好之处敬请见谅。
遇到的问题:
1.给数组赋值这里一直有问题,如果在主函数中写L.data[]={}会报错,也不知道是不是因为我用的dev-c++的缘故,直接对data数组赋值的话,就没有对线性表中的数组赋值,因此最后改为用一个赋值函数一个一个赋值。此处也可以用scanf函数依次键盘键入每个数。
2.bool函数这里是为了算法的健壮性,否则可能出现溢出等情况。因为线性表是一个接着一个的,意思就是不能a[1],a[2]后面直接接a[8]。
//在第几个位置插入什么元素的算法
#include <stdio.h>
#define MaxSize 10
typedef struct{
int data[MaxSize];//用静态数组存放元素
int length;
} Sqlist;
void InitList(Sqlist &L){
for(int i=0;i<MaxSize;i++){
L.data[i]=0;
}
L.length=0;
}
bool insert(Sqlist &L,int a,int b){
if(a<1||a>L.length+1)
return false;
if(L.length>MaxSize)
return false;
for(int i=L.length;i>=a;i--){
L.data[i]=L.data[i-1];
}
L.data[a-1]=b;
L.length++;
return true;
}
void output(Sqlist &L){
for(int i=0;i<L.length;i++){
printf("L.data[%d]=%d\n",i,L.data[i]);
}
}
void fuzhi(Sqlist &L){
for(int i=0;i<L.length;i++){
int data[]={1,3,5,7,8,7};
L.data[i]=data[i];
}
}
int main(){
Sqlist L;
InitList(L);
L.length=6;
fuzhi(L);
insert(L,4,3);
output(L);
//for(int i=0;i<L.length;i++){
// printf("L.data[%d]=%d\n",i,data[i]);
// }
return 0;
}