#include <stdio.h>
#include <stdlib.h>
#define FALSE 0
#define TRUE 1
#define DataType int
typedef struct SequenceList{//线性表顺序映像结构
int MAXNUM;//顺序表的最大存储空间
int n;//当前元素个数
DataType *Elemnet;//元素类型
}*SeqList;
SeqList seq_initialize(){//初始化
SeqList list=(SeqList)malloc(sizeof(struct SequenceList));
if(!list){
printf("overflow !!");
return (void *)0;
}
list->Elemnet=(DataType *)malloc(list->MAXNUM*sizeof(DataType));
list->MAXNUM=100;
list->n=0;
printf("initialize ok!\n");
return list;
}
int seq_insert_element(SeqList list,int index,int value){//在下标为index的元素之前插入value
int temp;
if(index>=list->MAXNUM){
printf("OVERFLOW!!");
return FALSE;
}
if(index>=list->n||list->n==0){//没有元素或者index之后没有元素
printf("The index is not data area,inserting at the last!\n");
list->Elemnet[list->n]=value;
list->n++;
return TRUE;
}
for(temp=list->n;temp>=index;temp--){//元素移动
list->Elemnet[temp]=list->Elemnet[temp-1];
}
list->Elemnet[index]=value;
list->n++;
return TRUE;
}
void seq_cross(SeqList list){//遍历顺序映像
int i;
for(i=0;i<list->n;i++){
printf("%d:%d\n",i,list->Elemnet[i]);
}
}
int seq_delete_element(SeqList list,int index){//删除下标为index的元素
int temp;
if(index>=list->n){
printf("no element index exists !!\n");
return FALSE;
}
for(temp=index+1;temp<list->n;temp++){
list->Elemnet[temp-1]=list->Elemnet[temp];
}
list->n--;
}
int seq_locate_element(SeqList list, DataType x){
int temp;
if(list->n==0){
printf("empty list!");
return FALSE;
}
for(temp=0;temp<list->n;temp++){
if(list->Elemnet[temp]==x)
return temp;
}
printf("no such x value!\n");
return FALSE;
}
int main(){//测试
SeqList list =seq_initialize(list);
for(int i=0;i<20;i++){
seq_insert_element(list,i,i+1);
}
seq_cross(list);
printf("%d\n",seq_locate_element(list,14));
seq_delete_element(list,13);
seq_cross(list);
return 0;
}
11-20
697
12-29
482
08-02
625
10-02
426