顺序表:
datatype seek_index(seqlist*list,int index){//按位置查找
if(list->len<=index||list->len==0||index>MAXSIZE){
return -1;
}
printf("%d\n",list->date[index]);
return 0;
}
int insert_index(seqlist*list,int index,datatype dat){//按位置插入
if(list->len==MAXSIZE||index<0||index>MAXSIZE){
return -1;
}
for(int i=list->len-1;i>=index;i--){
list->date[i+1]=list->date[i];
}
list->date[index]=dat;
list->len++;
return 0;
}
int dele_index(seqlist*list,int index){//按位置删除
if(index>list->len-1||index<0||index>MAXSIZE||list->len==0){
return -1;
}
for(int i=index+1;i<=list->len-1;i++){
list->date[i-1]=list->date[i];
}
list->len--;
return 0;
}
void re_duplicate(seqlist *list){//去重
int i=0,k=0;
for(i=0;i<list->len-1;i++){
for(k=i+1;k<list->len;k++){
if(list->date[k]==list->date[i]){
dele_index(list,k);
k--;
}
}
}
}
链表:
int insert_head(linklist p,datatype data){//头插
if(p==NULL)return -1;
linklist q=create();
if(q==NULL)return -1;
q->next=p->next;
p->next=q;
q->data=data;
p->len++;
return 0;
}
int output(linklist p){//输出
puts("");
if(p==NULL||p->len==0)return -1;
linklist q=p;
for(int i=0;i<p->len;i++){
q=q->next;
printf("%d\t",q->data);
}
putchar(10);
return 0;
}
int insert_rear(linklist p,datatype key){//尾插
if(p==NULL)return -1;
linklist q=p;
for(int i=0;i<p->len;i++){
q=q->next;
}//指向当前最后一个节点
linklist s=create();
if(s==NULL)return -1;
q->next=s;
p->len++;
s->data=key;
return 0;
}
int dele_head(linklist p){//头删
if(p==0||p->len==0){
return -1;
}
linklist q=p->next;
p->next=q->next;
q=mfree(q);
p->len--;
return 0;
}
int dele_rear(linklist p){//尾删
if(p==NULL||p->len==0)return -1;
linklist q=p;
for(int i=0;i<p->len-1;i++)
q=q->next;
q->next=mfree(q->next);
p->len--;
return 0;
}
int dele_index(linklist p,int index){//按位置删
if(p==NULL||index>p->len||index<1)return -1;
linklist q=p;
for(int i=0;i<index-1;i++){
q=q->next;
}
linklist k=q->next;
q->next=k->next;
k=mfree(k);
p->len--;
return 0;
}
int insert_index(linklist p,int index,datatype key){//按位置插
if(p==NULL||index>p->len+1||index<1){
return -1;
}
linklist q=p;
for(int i=0;i<p->len-1;i++){
q=q->next;
}
linklist k=create();
if(k==NULL)return -1;
k->data=key;
k->next=q->next;
q->next=k;
p->len++;
return 0;
}