考研数据结构之顺序表 (待续)
#include <stdio.h>
#include <malloc.h>
#define MAXSIZE 100
typedef struct{
int data[MAXSIZE];
int length;
}sqlist;
int insert(sqlist &L, int e ,int i){
if(i<1 || i>L.length+1 || i>MAXSIZE){
return 0;
}
for(int j = L.length; j >= i ;j--){
L.data[j] = L.data[j-1];
}
L.data[i-1] = e;
L.length++;
return 1;
}
int deletei(sqlist &L ,int i ,int &e){
if(i<1||i>L.length){
return 0;
}
L.data[i-1] = e;
for(int j = i-1; j<L.length; j++){
L.data[j] = L.data[j+1];
}
L.length -- ;
return 1;
}
int findByData(sqlist &L, int e){
for(int i = 0 ; i<L.length ; i++){
if(L.data[i]==e){
return i;
}
}
return -1;
}
int display(sqlist &L){
for(int i = 0 ;i < L.length ;i++){
printf("%d->%d",i,L.data[i]);
}
}
int fun1(sqlist &L){
int min = L.data[0];
int local =0;
if(L.length<1){
return 0;
}
for(int i = 0;i<L.length;i++){
if(L.data[i]<min){
min = L.data[i];
local = i;
}
}
L.data[local] = L.data[L.length-1];
L.length--;
return 1;
}
void fun2(sqlist &L){
int temp = 0;
int i = 0 ;
int j = L.length-1;
for(;i>=j;){
temp = L.data[i];
L.data[i] = L.data[j];
L.data[j] = temp;
j--;
i++;
}
}
void fun3(sqlist &L,int x){
int k = 0;
for(int i = 0 ;i<L.length;i++){
if(L.data[i] != x){
L.data[k] = L.data[i]
}
k++;
}
L.length = k ;
}
void fun4(sqlist &L,int s ,int t){
int s1=-1,t1=-1;
if(s>t||L.length==0){
return 0;
}
for(int i = 0;i<L.length;i++){
if(L.data[i]>=s&&s1!=-1){
s1 = i;
}
if(L.data[i]<=t&&t1!=-1){
t1 = i
}
}
L.length = L.length - (t1-s1+1);
for(int j=t1+1;j<L.length;j++){
L.data[j] = L.data[s1];
s1++;
}
return 1;
}
int main(int argc, char *argv[])
{
sqlist L ;
L.length = 0;
display(L);
int result = insert(L,1,1);
display(L);
printf("%d",result);
return 0;
}