回覆列表
  • 1 # 快樂與我同行9

    #include

    #include

    #include

    typedef struct seqlist //定義線性表的順序儲存結構

    {

    int *elem; //儲存空間分配的首地址

    int length ; //線性長度

    }seqlist;

    //此變數可作為線性表資料型別定義線性表

    void init(seqlist &l) //線性表的初始化

    {

    l.elem=new int[20]; //分配儲存空間儲存線性表中的元素

    l.length=0; //空線性表的長度為0

    }

    void delseqlist(seqlist &l) //銷燬建立的線性表

    {

    delete []l.elem;

    l.length=0;

    }

    void insert(seqlist &l,int i, int x)//元素e插入線性表中的第i個位置上

    {

    if(il.length+1)

    cout

    for(int j=l.length;j>=i;j--)

    l.elem[j+1]=l.elem[j]; //第i個元素及其後的元素依次後移

    l.elem[i]=x; //插入新元素於第i個位置上

    l.length++; //線性表的長度增1

    }

    void printout(seqlist &l) //輸出線性表當中的所有元素

    {

    int j;

    for(j=1;j

    cout

    }

    int llength(seqlist &l) //求線性表的長度

    {

    return l.length;

    }

    int locateElem(seqlist &l, int e) //在順序表L中查詢第一個值於e相等的資料元素

    {

    int i=1;

    int *p;

    p=l.elem; p++; //p指向線性表中的第一個元素

    while (i

    ++i;

    if(i

    return i;

    else

    return 0; //返回結果

    }

    {

    int *p,*q;

    if((il.length)) cout

    p=&(l.elem[i]); //將被刪元素送給e

    e=*p;

    q=l.elem+l.length; //表尾元素的位置

    for(++p; p

    *(p-1)=*p;//被刪元素之後的元素前移

    l.length--;

    }

    void invert( seqlist &l,int s,int t) //就地逆置

    {

    int k;

    int w;

    for(k=s;k

    {

    w=l.elem[k];

    l.elem[k]=l.elem[s+t-k];

    l.elem[s+t-k]=w;

    }

    }

    void main() //構成完整的源程式並對演算法進行測試

    {

    seqlist l;

    int x,a,y,b,j;

    init(l); //初始化空線性表l

    cout

    cin>>a;

    cout

    for(j=1;j

    {

    cin>> x;

    insert(l,j,x);

    }

    cout

    printout(l);

    cout

    cin>>y;

    Delete(l,y,b);

    cout

    printout(l);

    invert(l,1,l.length );

    cout

    printout(l);

    cout

    cin>>x;

    cout

    cout

    cout

    }

    我以前做的

  • 中秋節和大豐收的關聯?
  • 《陋室銘》運用了怎樣的寫作手法?為什麼要這樣寫?