自順序表中刪除第i個元素開始的k個元素


從順序表中刪除自第i個元素開始的k個元素。若不夠k個元素時,將i后面的元素全部刪除。

#include <stdio.h>
#define MAXSIZE 100
typedef struct
{
    int elem[MAXSIZE];
    int last;
} SeqList;
void deletelist(SeqList *l,int i,int k);
int main()
{
    int i,k,j=0;
    SeqList *l;
    SeqList a;
    l=&a;
    scanf("%d%d",&i,&k);//輸入i和k
    while(scanf("%d",&l->elem[j])!=EOF)
        j++;//輸入順序表內容
    l->last=j-1;
    deletelist(l,i,k);
    return 0;
}
void deletelist(SeqList *l,int i,int k)
{
    int j;
    if(i>l->last+1||i<1)
        printf("刪除位置不合法");
    else
    {
        if(k>=l->last-i+2)
        {
            for(j=i-1; j<=l->last; j++)
                l->elem[j]=0;
            l->last=i-2;
        }
        else
        {
            for(j=i-1; j<i-1+k; j++)
                l->elem[j]=0;
            for(j=i-1; j<=l->last-k; j++)
                l->elem[j]=l->elem[j+k];
            l->last=j-1;
        }
        for(j=0; j<=l->last; j++)
            printf("%d\n",l->elem[j]);
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM