纯手打顺序表相关操作,包括顺序表的创建、初始化、输出、插入、删除、销毁等,仅供自己回顾使用,可能会有不对的或者不恰当的地方望大家指正,共同学习。
代码如下:
//数据结构顺序表
#include<cstdio>
#include<iostream>
#include<cstdlib>
#define MaxSize 100
using namespace std;
typedef struct{
int *data;
int maxsize;
int length;
}SqList;
//创建顺序表
SqList createList(){
SqList *list = (SqList*)malloc(sizeof(SqList));
return *list;
}
//初始化顺序表
int initList(SqList &L,int num){
L.data = (int *)malloc(sizeof(int)*num);
if(!L.data){
return 0;
}
L.length = num;
L.maxsize = MaxSize;
for(int j = 0;j<L.length;j++){
scanf("%d",&L.data[j]);
}
return 1;
}
//输出内容
void getPrint(SqList &L){
for(int j = 0;j<L.length;j++){
printf("%d ",L.data[j]);
}
printf("\n");
}
//插入
int insertList(SqList &L,int index,int val){
if(index>L.length||index<1)
return 0;
for(int i = L.length;i>=index;i--){
L.data[i]=L.data[i-1];
}
L.data[index-1]=val;
L.length++;
return 1;
}
//删除
int deleteList(SqList &L,int index){
if(index<1||index>L.length){
return 0;
}
for(int i=index-1;i<L.length-1;i++){
L.data[i] = L.data[i+1];
}
L.length--;
return 1;
}
//销毁顺序表
void destroyList(SqList &L){
free(L.data);
L.length = 0;
L.maxsize = 0;
}
int main(){
SqList list = createList();
int flag = initList(list,2);//2表示线性表的长度,可以动态修改
flag = insertList(list,2,3);
getPrint(list);
flag = deleteList(list,1);
getPrint(list);
destroyList(list);
//printf("%d",flag);
//printf("%d %d",flag,list.data[0]);
return 0;
}