一.顺序表的静态分配
#define Maxsize 60
#include<iostream>
using namespace std;
typedef struct{
int data[Maxsize];
int length;
}SqList;
void InitList(SqList &L){//初始化
L.length=0;
}
void List(SqList& L,int e){
L.data[L.length++]=e;//存储数据
}
void ListInsert(SqList& L,int i,int e){//在下标i处存元素e
for(int j=L.length;j>=i;j--){
L.data[j]=L.data[j-1];
}
L.data[i-1]=e;
L.length++;
}
void ListBianLi(SqList& L){//遍历顺序表
for(int i=0;i<L.length;i++){
cout<<"第"<<(i+1)<<"个元素"<<L.data[i]<<endl;
}
}
int GetElem(SqList L,int i){//取第(i+1)个元素
if(i>=L.length||i<0){
cout<<"下标i处无元素"<<endl;
return 0;
}
return L.data[i];
}
void GetBiaoChang(SqList L){
cout<<"表中有元素"<<L.length<<"个"<<endl;
}
void destoryList(SqList& L){//置空
for(int i=0;i<L.length;i++){
L.data[i]=0;
}
L.length=0;
}
int main() {
SqList L;
InitList(L);
List(L,9);//存9
List(L,999);//存999
int x=GetElem(L,0);
cout<<"第一个"<<x<<endl;
int x1=GetElem(L,1);
cout<<"第二个"<<x1<<endl;
GetBiaoChang(L);
cout<<"--------------"<<endl;
ListInsert(L,1,100);
ListBianLi(L);
GetBiaoChang(L);
ListInsert(L,2,500);
ListBianLi(L);
GetBiaoChang(L);
destoryList(L);
GetBiaoChang(L);
cout<<"--------------"<<endl;
List(L,119);
int x3=GetElem(L,0);
cout<<"第一个元素"<<x<<endl;
ListBianLi(L);
GetBiaoChang(L);
cout<<"--------------"<<endl;
GetElem(L,1);
return 0;
}
Dev-c++环境下输出结果
二.顺序表的实现动态分配
#include<bits/stdc++.h>
using namespace std;
#define InitSize 10
typedef struct{
int* data;
int MaxSize;
int length;
}SeqList;
void InitList(SeqList& L){
L.data=(int*)malloc(InitSize* sizeof(int));
L.length=0;
L.MaxSize=InitSize;
}
void CunChu(SeqList& L,int x){
L.data[L.length++]=x;
}
void ShuChu(SeqList& L){
for(int i=0;i<L.length;i++){
cout<<L.data[i]<<endl;
}
}
void IncreaseSize(SeqList& L,int len){
int* p=L.data;
L.data=(int*)malloc((L.MaxSize+len)*sizeof(int));
for(int i=0;i<L.length;i++){
L.data[i]=p[i];
}
L.MaxSize=L.MaxSize+len;
free(p);
}
int x;
int main(){
SeqList L;
InitList(L);
CunChu(L,1);
CunChu(L,5);
CunChu(L,6);
CunChu(L,8);
CunChu(L,10);
ShuChu(L);
return 0;
}