資料結構實踐——順序表應用,資料結構實踐順序

來源:互聯網
上載者:User

資料結構實踐——順序表應用,資料結構實踐順序

【項目 - 順序表應用】
定義一個採用順序結構儲存的線性表,設計演算法完成下面的工作:
1、刪除元素在[x, y]之間的所有元素,要求演算法的時間複雜度為O(n),空間複雜度為O(1);
2、將所在奇數移到所有偶數的前面,要求演算法的時間複雜度為O(n),空間複雜度為O(1)。

提示:
(1)充分利用前面建立的演算法庫解決建立順序表、輸出線性表的問題;
(2)為保證複雜度的要求,設計演算法並用專門的函數實現演算法;
(3)每項工作寫一個程式,並發布博文,展示你的實踐成果。

[參考解答] (註:項目中所需要的list.h和list.cpp見點擊參照…)
1、刪除元素在[x, y]之間的所有元素,要求演算法的時間複雜度為O(n),空間複雜度為O(1);

#include "list.h"#include <stdio.h>//刪除線性表中,元素值在x到y之間的元素void delx2y(SqList *&L, ElemType x,  ElemType y){    int k=0,i; //k記錄非x的元素個數    ElemType t;    if(x>y)    {        t=x;        x=y;        y=t;    }    for (i=0; i<L->length; i++)        if (L->data[i]<x || L->data[i]>y )  //複製不在[x, y]之間的元素        {            L->data[k]=L->data[i];            k++;        }    L->length=k;}//用main寫測試代碼int main(){    SqList *sq;    ElemType a[10]= {5,8,7,0,2,4,9,6,7,3};    CreateList(sq, a, 10);    printf("刪除前 ");    DispList(sq);    delx2y(sq, 4, 7);    printf("刪除後 ");    DispList(sq);    return 0;}

2、將所在奇數移到所有偶數的前面,要求演算法的時間複雜度為O(n),空間複雜度為O(1)。

#include "list.h"#include <stdio.h>//移動結束後,奇數居左,偶數居右void move(SqList *&L){    int i=0,j=L->length-1;    ElemType tmp;    while (i<j)    {        while ((i<j) && (L->data[j]%2==0))  //從右往左,找到第一個奇數(偶數就忽略不管)            j--;        while ((i<j) && (L->data[i]%2==1))  //從左往右,找到第一個偶數(奇數就忽略不管)            i++;        if (i<j)   //如果未到達“分界線”,將右邊的奇數和左邊的偶數交換        {            tmp=L->data[i];            L->data[i]=L->data[j];            L->data[j]=tmp;        }    }   //待迴圈上去後,繼續尋找,並在必要時交換}//用main寫測試代碼int main(){    SqList *sq;    ElemType a[10]= {5,8,7,0,2,4,9,6,7,3};    CreateList(sq, a, 10);    printf("操作前 ");    DispList(sq);    move(sq);    printf("操作後 ");    DispList(sq);    return 0;}

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.