静态分配
#include<stdio.h>
#define MAXSIZE 50
#define ElemType int
typedef struct{
ElemType data[MAXSIZE];
int length;
}sqList;
sqList S;
void InitSqList(sqList &S){
S.length = 0;
}
bool isEmpty(sqList &S){
if(S.length == 0)
return true;
else
return false;
}
bool ListInsert(sqList &L, int i, ElemType e){
if(i < 1 || i > L.length + 1)
return false;
if(L.length >= MAXSIZE)
return false;
for(int j = L.length;j >= i;j --){
L.data[j] = L.data[j-1];
}
L.data[i-1] = e;
L.length ++;
return true;
}
bool ListDelete(sqList &L, int i, ElemType &e){
if(i < 1 || i > L.length)
return false;
e = L.data[i-i];
for(int j = i;j < L.length;j ++)
L.data[j-1] = L.data[j];
L.length --;
return true;
}
int LocateElem(sqList &L, ElemType e){
for(int i = 0;i < L.length;i ++){
if(L.data[i] == e)
return i+1;
}
return 0;
}
void GetSqList(sqList &L){
if(L.length <= 0){
printf("当前顺序表没有元素\n");
return ;
}
for(int i = 0;i < L.length;i ++){
printf("第%d个元素为:%d\n",i+1,L.data[i]);
}
}
int main(){
InitSqList(S);
if(isEmpty(S)){
printf("当前顺序表为空\n");
}else{
printf("当前顺序表不为空\n");
}
ListInsert(S,1,6);
ListInsert(S,2,7);
ListInsert(S,1,8);
GetSqList(S);
printf("8在第%d个位置\n",LocateElem(S,8));
int x;
ListDelete(S,2,x);
GetSqList(S);
return 0;
}
动态分配
#include<stdio.h>
#include <stdlib.h>
#define InitSize 10
#define ElemType int
typedef struct
{
int * data;
int MaxSize;
int length;
}SqList;
SqList L;
void InitList(SqList &L)
{
L.data = (int *)malloc(sizeof(int)*InitSize);
L.length = 0;
L.MaxSize = InitSize;
}
void IncreaseSize(SqList &L)
{
int *p = L.data;
L.data = (int *)malloc((L.MaxSize*2) * sizeof(int));
for (int i = 0; i < L.length; i++)
L.data[i] = p[i];
L.MaxSize = L.MaxSize*2;
free(p);
}
bool ListInsert(SqList &L, int i, ElemType e){
if(i < 1 || i > L.length + 1)
return false;
if(L.length >= L.MaxSize)
IncreaseSize(L);
for(int j = L.length;j >= i;j --){
L.data[j] = L.data[j-1];
}
L.data[i-1] = e;
L.length ++;
return true;
}
bool ListDelete(SqList &L, int i, ElemType &e){
if(i < 1 || i > L.length)
return false;
e = L.data[i-i];
for(int j = i;j < L.length;j ++)
L.data[j-1] = L.data[j];
L.length --;
return true;
}
int LocateElem(SqList &L, ElemType e){
for(int i = 0;i < L.length;i ++){
if(L.data[i] == e)
return i+1;
}
return 0;
}
void GetSqList(SqList &L){
if(L.length <= 0)
printf("当前顺序表没有元素\n");
for(int i = 0;i < L.length;i ++){
printf("第%d个元素为:%d\n",i+1,L.data[i]);
}
}
int main(){
InitList(L);
for(int i = 0;i < 15;i ++){
ListInsert(L,1,i+1);
}
GetSqList(L);
printf("当前顺序表大小为:%d\n",L.length);
printf("当前顺序表最大容量为:%d\n",L.MaxSize);
return 0;
}