运行软件
C-free5.0 或者 VS C++ 2010学习版
代码展示
SqList_dynamicfull.cpp
运行环境建议C++环境
#include <stdio.h>
#include <stdlib.h>
#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 Increasesize(SeqList &L,int len){
int *p=L.data;
L.data=(int *)malloc((Initsize+len)*sizeof(int));
for(int i=0;i<L.length;i++){
L.data[i]=p[i];
}
L.maxsize+=len;
free(p);
}
//插入函数,将值e插到i位置
bool ListInsert(SeqList &L,int i,int e){
if(i<1||i>L.length+1)
return false;
if(L.length>=L.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;
}
//删除函数,将删除的元素返回给e
bool ListDelete(SeqList &L,int i,int &e){
if(i<1||i>L.length)
return false;
e=L.data[i-1];
for(int j=i;j<L.length;j++){
L.data[j-1]=L.data[j];
}
L.length--;
return true;
}
//按位查找函数
void GetElem(SeqList L,int i,int &e){
e=L.data[i-1];
}
//按值查找函数
int LocationList(SeqList L,int e){
for(int i=0;i<L.length;i++){
if(L.data[i]==e)
return i+1;
}
return 0;
}
//形式上的visit()访问函数,功能类似于访问(打印)给定值
bool visit(SeqList L){
if(L.length<=L.maxsize)
return true;
}
//访问表中的所有元素的函数
bool ListTraverse(SeqList L){
if(!visit(L))
return false;
return true;
}
//打印顺序表函数
bool PrintList(SeqList L){
for(int i=0;i<L.length;i++){
printf("data[%d]=%d ",i,L.data[i]);
}
return true;
}
//填表函数,元素个数自定,不得超过初始最大容量
bool GiveElem(SeqList &L,int count){
if(count>L.maxsize)
return false;
for(int i=0;i<count;i++){
L.data[i]=25*i;
L.length++;
}
return true;
}
//求表长函数
int ListLength(SeqList L){
return L.length;
}
//主函数测试
int main(){
SeqList L;
int e;
printf("This is a Dynamic sequential List.\n");
InitList(L);
Increasesize(L,2);
GiveElem(L,12);
ListDelete(L,6,e);
ListInsert(L,3,666);
printf("You deleted the element:e=%d\n",e);
PrintList(L);
printf("\n");
GetElem(L,6,e);
printf("NO.6 element:e=%d\n",e);
int a=LocationList(L,666);
int b=ListLength(L);
int c=ListTraverse(L);
printf("%d\n%d\n%d\n",a,b,c);
return 0;
}
运行结果
This is a Dynamic sequential List.
You deleted the element:e=125
data[0]=0 data[1]=25 data[2]=666 data[3]=50 data[4]=75 data[5]=100 data[6]=150 data[7]=175 data[8]=200 data[9]=225 data[10]=250 data[11]=275
NO.6 element:e=100
3
12
1
请按任意键继续. . .