线性表分两种,一种是顺序表,一种是链表。
先介绍第一种顺序表:
#include<stdio.h>
#include<stdlib.h>
typedef struct {
int *data;
int length; //这个是顺序表中现有的元素个数。
int maxsize; //这个是顺序表中可容纳的最大的元素个数。
}sqlist;
sqlist creat(sqlist &l,int maxnum){ //创建顺序表
l.maxsize = maxnum;
l.data = new int[l.maxsize];
l.length = 0;
return l;
}
bool insert(sqlist &l,int data,int position){ //插入元素
if(position<=0 && position >=l.maxsize){ //判断插入位置是否在范围内
return false;
}
if(l.length >= l.maxsize){ //判断是否容量已满
return false;
}
for(int i=l.length; i>=position; i--){ //把相应位置的元素依次向后移一位。
l.data[i]=l.data[i-1]; //这里很容易出错,注意i的值。
}
l.data[position-1]=data;
l.length++;
return true;
}
void output(sqlist &l){ //输出相应元素。
for(int i=0; i<l.length; i++){
printf("%d\n",l.data[i]);
}
}
int main(){
sqlist l = creat(l,10);
for(int i=0; i<5; i++)
insert(l,i,1);
output(l);
return 0;
}