<xmp id="wwowe"><nav id="wwowe"></nav>
<optgroup id="wwowe"><strong id="wwowe"></strong></optgroup>
<optgroup id="wwowe"><optgroup id="wwowe"></optgroup></optgroup>
<menu id="wwowe"></menu>
  • <menu id="wwowe"><tt id="wwowe"></tt></menu>

    數據結構實驗報告總結范文五篇

    時間:2022-10-30 工作計劃 點擊:

    報告使用范圍很廣。按照上級部署或工作計劃,每完成一項任務,一般都要向上級寫報告,反映工作中的基本情況、工作中取得的經驗教訓、存在的問題以及今后工作設想等,以取得上級領導部門的指導。報告,在已發布的黨、人大、政府、司法、軍隊機關的公文處理規范中, 以下是為大家整理的關于數據結構實驗報告總結5篇 , 供大家參考選擇。

    數據結構實驗報告總結5篇

    第一篇: 數據結構實驗報告總結

    實驗二 棧

    實驗名稱:棧的順序存儲結構的插入和刪除

    實驗內容:本程序利用棧的順序存儲結構構造了棧,并實現了棧的插入和刪除功能。

    程序流程圖:

    源代碼:

    #include

    #include

    #define TRUE 1

    #define FALSE 0

    #define OK 1

    #define ERROR 0

    #define INFEASIBLE -1

    #define OVERFLOW -2

    #define STACK_INIT_SIZE 100

    #define STACKINCREMENT 10

    typedef int SElemType;

    typedef int Status;

    typedef struct

    {

    SElemType *base;

    SElemType *top;

    int stacksize;

    }SqStack;

    Status InitStack(SqStack *S)

    {

    (*S).base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));

    if(!(*S).base)exit(OVERFLOW);

    (*S).top=(*S).base;

    (*S).stacksize=STACK_INIT_SIZE;

    return OK;

    }

    Status Push(SqStack S,SElemType e)

    {

    if(S.top-S.base>=S.stacksize)

    {

    S.base=(SElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));

    if(!S.base)exit(OVERFLOW);

    S.top=S.base+S.stacksize;

    S.stacksize+=STACKINCREMENT;

    }

    *(S.top+1)=e;

    return OK;

    }

    Status Pop(SqStack S,SElemType *e)

    {

    if(S.top==S.base)return ERROR;

    e=*--S.top;

    return OK;

    }

    void main()

    {

    SqStack S;

    int j;

    int n,i,count=0;

    SElemType e;

    clrscr();

    InitStack(&S);

    for(i=0; ;i++)

    {

    scanf("%d",&S.base[i]);

    if(S.base[i]==999) break;

    S.top=&S.base[i];

    count++;

    }

    for(i=0;i

    第二篇: 數據結構實驗報告總結

    華北電力大學

    實 驗 報 告

    |

    |

    實驗名稱 約瑟夫環

    課程名稱 算法與數據結構試驗

    |

    |

    專業班級: 學生姓名:

    學 號: 成 績:

    指導教師: 實驗日期:

    一、 實驗名稱:約瑟夫環

    二、 實驗目的

    綜合應用所學的知識分析問題、解決問題,學會用單鏈表與循環鏈表解決問題,提高實際編程能力及程序調試能力。

    三、 實驗要求

    采用單鏈表或循環鏈表設計約瑟夫環

    四、 實驗內容

    約瑟夫環問題是:編號為1,2,…,n的n個人按順時針方向圍坐一圈,每人有一個正整數編號。從某個位置上的人開始報數,數到m的人便出列,下一個人(第m+1個)又從1數起,數到m的人便是第二個出列的人,依次重復下去,直到最后一個人出列。于是得到一個新的次序,試設計程序求出出列順序。輸入數據檢測結果,m=4,n=8。

    五、 實驗原理

    用單鏈表(或循環鏈表)存儲數據,利用循環按要求將鏈表中的數據輸出,實現約瑟夫環。

    六、 實驗結果

    #include

    #include

    #include

    using namespace std;

    struct person

    {

    int data;

    person *next;

    };

    int main()

    {

    int n=0;

    int m=0;

    cout>n;

    cout>m;

    person *head=new person;

    person *p=head;

    for (int i=1;idata=i;

    else

    {

    p->next=new person;

    p=p->next;

    p->data=i;

    }//設置節點;

    }

    p->next=head;//連接首尾節點;

    coutnext=p->next;//刪除節點;

    cout

    第三篇: 數據結構實驗報告總結

    《數據結構與算法分析》

    課程設計內容體系主要內容

    《數據結構課程設計》課程,可使學生深化理解書本知識,致力于用學過的理論知識和上機取得的實踐經驗,解決具體、復雜的實際問題,培養軟件工作者所需的動手能力、獨立解決問題的能力。該課程設計側重軟件設計的綜合訓練,包括問題分析、總體結構設計、用戶界面設計、程序設計基本技能和技巧、多人合作,以至一整套軟件工作規范的訓練和科學作風的培養。

    一、 課程設計要求

    學生必須仔細閱讀《數據結構與算法分析》課程設計方案,認真主動完成課程設計的要求。有問題及時主動通過各種方式與教師聯系溝通。

    學生要發揮自主學習的能力,充分利用時間,安排好課程設計的時間計劃,并在課程設計過程中不斷檢測自己的計劃完成情況,及時的向教師匯報。

    課程設計按照教學要求需要兩周時間完成,兩周中每天(按每周5天)至少要上3-4小時的機來調試C語言設計的程序,總共至少要上機調試程序30小時。

    二、 數據結構課程設計的具體內容

    本次課程設計完成如下模塊(共9個模塊,學生可以在其中至少挑選6個功能塊完成,但有**號的模塊是必須要選擇的)

    (1) 運動會分數統計**

    任務:參加運動會有n個學校,學校編號為1……n。比賽分成m個男子項目,和w個女子項目。項目編號為男子1……m,女子m+1……m+w。不同的項目取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分分別為:5、3、2;哪些取前五名或前三名由學生自己設定。(mnext=q->next;

    printf("%4d",q->data);

    if(i%10==0)printf("\n");

    free(q);

    }

    R=p;

    return R;

    }

    /*輸出函數*/

    void OutRing(int n,LinkList R)

    {

    int i;

    ListNode *p;

    p=R;

    for(i=1;inext)

    {

    printf("%4d",p->data);

    if(i%10==0) printf("\n");

    }

    printf("\n");

    printf("猴大王的號碼:\n");

    printf("4%d",p->next);

    }

    /*主函數*/

    void main()

    {

    LinkList R;

    int n,k;

    LinkList InitRing(int n,LinkList R );

    printf("猴子的總數N:");

    scanf("%d",&n);

    printf("報到要被淘汰數字 K:");

    scanf("%d",&k);

    printf("被淘汰的猴子:\n");

    R=InitRing(n,R);

    R=DeleteDeath(n,k,R);

    printf("\n");

    OutRing(n,R);

    }

    實驗結果:

    實驗2 訂票系統

    任務:通過此系統可以實現如下功能:

    錄入:可以錄入航班情況(數據可以存儲在一個數據文件中,數據結構、具體數據自定)

    查詢:可以查詢某個航線的情況(如,輸入航班號,查詢起降時間,起飛抵達城市,航班票價,票價折扣,確定航班是否滿倉);可以輸入起飛抵達城市,查詢飛機航班情況;

    訂票:可以訂票(訂票情況可以存在一個數據文件中,結構自己設定),如果該航班已經無票,可以提供相關可選擇航班;

    退票:可退票,退票后修改相關數據文件;客戶資料有姓名,證件號,訂票數量及航班情況,訂單要有編號。

    修改航班信息:當航班信息改變可以修改航班數據文件

    要求:根據以上功能說明,設計航班信息,訂票信息的存儲結構,設計程序完成功能;

    實驗內容:

    源程序:

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    #define TRUE 1

    #define FALSE 0

    typedef int BOOL;

    #define NEW(type, size) (type*)malloc(sizeof(type) * size)

    typedef struct _date { /* 日期 */

    int m_year;

    int m_month;

    int m_day;

    } DATE;

    typedef struct _time { /* 時間 */

    int m_hour;

    int m_min;

    } TIME;

    typedef struct _flight { /* 航班數據 */

    int m_fltno; /* 航班號,若此成員為-1,則表示此航班未使用 */

    char m_szFrom[30]; /* 起飛港 */

    char m_szPass[30]; /* 途經港 */

    char m_szTo[30]; /* 到達港 */

    TIME m_start; /* 起飛時間 */

    TIME m_arrive; /* 到達時間 */

    TIME m_fly; /* 飛行固定時間 */

    int m_people; /* 乘客限額 */

    } FLIGHT, *PFLIGHT;

    typedef struct _passengernode { /* 乘客數據 */

    char m_szName[20]; /* 姓名 */

    char m_szCorp[30]; /* 單位 */

    char m_szNumber[19]; /* 身份證號,考慮到字母的情況,故使用字符串 */

    DATE m_Date; /* 訂票日期 */

    int m_fltno; /* 航班號 */

    int m_seatno; /* 座位號 */

    } PASSENGER, *PPASSENGER;

    typedef struct _psgnode { /* 乘客結點 */

    PASSENGER m_psg;

    struct _psgnode *next;

    } NODE, *PNODE;

    /* 清空鍵盤緩沖區 */

    void ClearBuffer(void);

    /* 讀取航班數據 */

    void ReadFlight(FLIGHT fltlist[]);

    /* 讀取乘客數據 */

    void ReadPassenger(PNODE psglist);

    /* 添加航班 */

    BOOL AddFlight(FLIGHT fltlist[], PFLIGHT fltdata);

    /* 刪除航班 */

    void DelFlight(FLIGHT fltlist[], int index);

    /* 添加乘客 */

    void AddPassenger(PNODE psglist, PPASSENGER psgdata);

    /* 刪除乘客 */

    BOOL DelPassenger(PNODE psglist, int index);

    /* 清空乘客鏈表 */

    void ClearPsgList(PNODE psglist);

    /* 取得乘客總數 */

    unsigned int GetPsgCount(PNODE psglist);

    BOOL datecmp(DATE* date1, DATE* date2);

    void Book(FLIGHT fltlist[], PNODE psglist);

    void query(FLIGHT fltlist[], PNODE psglist);

    void fltnumber(FLIGHT fltlist[]);

    void psgname (PNODE psglist);

    void fromto (FLIGHT fltlist[]);

    void fltdat(FLIGHT fltlist[], PNODE psglist);

    /* 保存航班數據 */

    void SaveFlight(FLIGHT fltlist[]);

    /* 保存乘客數據 */

    void SavePassenger(PNODE psglist);

    /* 退出 */

    void Quit(FLIGHT fltlist[], PNODE psglist);

    BOOL datecmp(DATE* date1, DATE* date2)

    {

    return (date1->m_year == date2->m_year && date1->m_month == date2->m_month

    && date1->m_day == date2->m_day);

    }

    BOOL timecmp(TIME* time1, TIME* time2)

    {

    return (time1->m_hour == time2->m_hour && time1->m_min == time2->m_min);

    }

    void ClearBuffer(void)

    {

    getchar();

    }

    void ReadFlight(FLIGHT fltlist[])

    {

    FILE *fp;

    if ((fp = fopen("", "rb")) != NULL)

    fread(fltlist, sizeof(FLIGHT), 40, fp);

    else

    {

    int i;

    for (i = 0; i < 40; i++)

    fltlist[i].m_fltno = -1;

    }

    fclose(fp);

    }

    void ReadPassenger(PNODE psglist)

    {

    FILE *fp;

    if ((fp = fopen("", "rb")) == NULL)

    psglist->next = NULL;

    else

    {

    int i, n;

    fread(&n, sizeof(int), 1, fp);

    for (i = 0; i < n; i++)

    {

    PASSENGER psg;

    fread(&psg, sizeof(PASSENGER), 1, fp);

    AddPassenger(psglist, &psg);

    }

    }

    }

    BOOL AddFlight(FLIGHT fltlist[], PFLIGHT fltdata)

    {

    int i;

    BOOL bResult = FALSE;

    for (i = 0; i < 40; i++)

    {

    if (fltlist[i].m_fltno == -1)

    {

    memcpy(&fltlist[i], fltdata, sizeof(FLIGHT));

    bResult = TRUE;

    break;

    }

    }

    return bResult;

    }

    void DelFlight(FLIGHT fltlist[], int index)

    {

    fltlist[index].m_fltno = -1;

    }

    void AddPassenger(PNODE psglist, PPASSENGER psgdata)

    {

    PNODE p, q;

    for (p = psglist; p->next != NULL; p = p->next)

    ;

    q = NEW(NODE, 1);

    memcpy(&q->m_psg, psgdata, sizeof(PASSENGER));

    q->next = NULL;

    p->next = q;

    }

    BOOL DelPassenger(PNODE psglist, int index)

    {

    int i = 0;

    PNODE p, q;

    for (p = psglist->next; p->next != NULL; p = p->next)

    i++;

    if (p != NULL && i == index - 1)

    {

    q = p->next;

    p->next = q->next;

    free(q);

    return TRUE;

    }

    else

    return FALSE;

    }

    void ClearPsgList(PNODE psglist)

    {

    PNODE p = psglist->next, q;

    while (p != NULL && p->next != NULL)

    {

    q = p;

    p = p->next;

    free(q);

    }

    }

    unsigned int GetPsgCount(PNODE psglist)

    {

    PNODE p;

    unsigned int s = 0;

    for (p = psglist->next; p != NULL; p = p->next)

    s++;

    return s;

    }

    void Book(FLIGHT fltlist[], PNODE psglist)

    {

    char c = "y";

    BOOL b;

    while (c == "y" || c == "Y")

    {

    int i;

    PASSENGER psg;

    printf("請輸入航班號:");

    scanf("%d", &;

    while >= 10000 || < 0)

    {

    printf("請重新輸入:");

    scanf("%d", &;

    }

    for(i = 0; i < 40; i++)

    {

    if(fltlist[i].m_fltno ==

    {

    PNODE p;

    BOOL *q;

    int j;

    printf("請輸入訂票日期:(yyyy,mm,dd)");

    scanf("%d,%d,%d", & & & q = NEW(int, fltlist[i].m_people);

    for (j = 0; j < fltlist[i].m_people; j++)

    q[j] = FALSE;

    for (p = psglist->next; p != NULL; p = p->next)

    {

    if(datecmp(&p->, & &&

    == p->

    q[p-> - 1] = TRUE;

    }

    printf("以下座位尚未有人訂:");

    for (j=0; j < fltlist[i].m_people; j++)

    {

    if (!q[j])

    printf("%d ", j + 1);

    }

    printf("\n請輸入訂票座位號:");

    scanf("%d", &;

    b = FALSE;

    do

    {

    int k;

    if > 0 && next; p != NULL; p = p->next)

    {

    if(strcmp(p->, name) == 0)

    {

    b = TRUE;

    printf("姓名:%s 單位:%s 身份證號:%s\n", p->,

    p->, p->;

    printf("訂票日期:%d-%d-%d ", p-> p-> p-> printf("航班號:%d 座位號:%d", p->, p->; break;

    }

    }

    if (!b)

    {

    printf("查無此人,按任意鍵退出");

    getch();

    return;

    }

    printf("是否繼續查詢(y/n)");

    ClearBuffer();

    c = getchar();

    }

    }

    void fromto (FLIGHT fltlist[])

    {

    char c = "y";

    while (c == "y" || c == "Y")

    {

    BOOL b = FALSE;

    char from[30], to[30];

    int i;

    printf("請輸入起飛港:");

    scanf("%s", from);

    printf("請輸入到達港:");

    scanf("%s", to);

    for(i = 0; i < 40; i++)

    {

    if(strcmp(fltlist[i].m_szFrom,from)==0)

    {

    if(strcmp(fltlist[i].m_szTo,to)==0)

    {

    b=TRUE;

    break;

    }

    }

    }

    if(b)

    {

    printf("%s--%s--%s\n",fltlist[i].m_szFrom,fltlist[i].m_szPass,fltlist[i].m_szTo);

    printf("起飛時間:%2d:%02d 到達時間:%2d:%02d 飛行固定時間:%2d:%02d\n",fltlist[i].,fltlist[i].,fltlist[i].,fltlist[i].,fltlist[i].,fltlist[i].;

    printf("乘客限額:%d",fltlist[i].m_people);

    }

    else

    printf("無此飛機");

    getch();

    printf("是否繼續查詢");

    ClearBuffer();

    c = getchar();

    }

    }

    void fltdat(FLIGHT fltlist[], PNODE psglist)

    {

    int people[40], i;

    DATE date;

    PNODE p;

    for (i = 0; i < 40; i++)

    people[i] = 0;

    printf("請輸入您要查詢的日期(yyyy,mm,dd):");

    scanf("%d,%d,%d", &, &, &;

    for (p = psglist->next; p != NULL; p=p->next)

    {

    if (datecmp(&date, &p->)

    {

    for(i=0;i

    people[i]++;

    }

    }

    }

    for (i = 0; i < 40; i++)

    {

    if (people[i] > 0)

    {

    printf("%d %s--%s--%s 人數:%d", fltlist[i].m_fltno, fltlist[i].m_szFrom,

    fltlist[i].m_szPass, fltlist[i].m_szTo, people[i]);

    }

    }

    getch();

    }

    void Add(FLIGHT fltlist[])

    {

    char c = "y";

    while (c == "y" || c == "Y")

    {

    FLIGHT flt;

    BOOL b;

    printf("請輸入航班號(1 - 10000):");

    scanf("%d", &;

    printf("請輸入起飛港:");

    scanf("%s", ;

    printf("請輸入途經港:");

    scanf("%s", ;

    printf("請輸入到達港:");

    scanf("%s", ;

    printf("請輸入起飛時間(hh:mm):");

    scanf("%d:%d", & & printf("請輸入到達時間(hh:mm):");

    scanf("%d:%d", & & printf("請輸入飛行固定時間(hh:mm):");

    scanf("%d:%d", & & printf("請輸入乘客限額:");

    scanf("%d", &;

    ClearBuffer();

    if (AddFlight(fltlist, &flt))

    printf("添加成功,");

    else

    printf("添加失敗,");

    printf("繼續添加航班嗎(Y/N)");

    c = getchar();

    }

    }

    void Del(FLIGHT fltlist[])

    {

    BOOL b = FALSE;

    int i, fltno;

    char c = "y";

    while (c == "y" || c == "Y")

    {

    printf("可以取消的航班號:");

    for (i = 0; i < 40; i++)

    {

    if (fltlist[i].m_fltno != -1)

    {

    b = TRUE;

    printf("%d ", fltlist[i].m_fltno);

    }

    }

    if (!b)

    {

    printf("無\n按任意鍵返回。");

    getch();

    return;

    }

    printf("\n請輸入要取消的航班號:");

    scanf("%d", &fltno);

    for (i = 0; i < 40; i++)

    {

    if (fltlist[i].m_fltno == fltno)

    {

    DelFlight(fltlist, i);

    break;

    }

    }

    printf("繼續刪除嗎(y/n)");

    ClearBuffer();

    c = getchar();

    }

    }

    void Query(FLIGHT fltlist[])

    {

    char c = "y";

    while (c == "y" || c == "Y")

    {

    BOOL b = FALSE;

    int i, fltno;

    printf("可以查詢的航班號:");

    for (i = 0; i < 40; i++)

    {

    if (fltlist[i].m_fltno != -1)

    {

    b = TRUE;

    printf("%d ", fltlist[i].m_fltno);

    }

    }

    if (!b)

    {

    printf("無\n按任意鍵返回。");

    getch();

    return;

    }

    printf("\n請輸入要查詢的航班號:");

    scanf("%d", &fltno);

    for (i = 0; i < 40; i++)

    {

    if (fltlist[i].m_fltno == fltno)

    {

    printf("%s--%s--%s 乘客限額:%d\n", fltlist[i].m_szFrom,

    fltlist[i].m_szPass, fltlist[i].m_szTo, fltlist[i].m_people);

    printf("起飛時間:%2d:%02d 到達時間:%2d:%02d 飛行固定時間:%2d:%02d\n",

    fltlist[i]., fltlist[i].,

    fltlist[i]., fltlist[i].,

    fltlist[i]., fltlist[i].;

    break;

    }

    }

    printf("繼續查詢嗎(y/n)");

    ClearBuffer();

    c = getchar();

    }

    }

    void OneDay(FLIGHT fltlist[], PNODE psglist)

    {

    char c = "y";

    while (c == "y" || c == "Y")

    {

    DATE date;

    int people[40], i;

    PNODE p;

    for (i = 0; i < 40; i++)

    people[i] = 0;

    printf("請輸入您要管理的日期(yyyy,mm,dd):");

    scanf("%d,%d,%d", &, &, &;

    for (p = psglist->next; p != NULL; p = p->next)

    {

    if (datecmp(&p->, &date))

    {

    for (i = 0; i < 40; i++)

    {

    if (fltlist[i].m_fltno == p->

    people[i]++;

    }

    }

    }

    for (i = 0; i < 40; i++)

    {

    if (fltlist[i].m_fltno != -1)

    {

    printf("%d %s--%s--%s 人數:%d\n", fltlist[i].m_fltno,

    fltlist[i].m_szFrom, fltlist[i].m_szPass, fltlist[i].m_szTo,

    people[i]);

    }

    }

    printf("繼續管理嗎(y/n)");

    ClearBuffer();

    c = getchar();

    }

    }

    void MultiDay(FLIGHT fltlist[], PNODE psglist)

    {

    char c = "y";

    while (c == "y" || c == "Y")

    {

    DATE date[7];

    int n, i, j;

    int people[40][7];

    PNODE p;

    printf("請輸入要查詢的天數(1-7):");

    do

    {

    scanf("%d", &n);

    if (n > 7 || n < 1)

    printf("輸入非法,請重新輸入:");

    } while (n > 7 || n < 1);

    for (i = 0; i < n; i++)

    {

    printf("請輸入第%d個日期(yyyy,mm,dd):", i);

    scanf("%d,%d,%d", &date[i].m_year, &date[i].m_month, &date[i].m_day);

    }

    for (i = 0; i < 40; i++)

    for (j = 0; j < 7; j++)

    people[i][j] = 0;

    for (p = psglist->next; p != NULL; p = p->next)

    {

    for (j = 0; j < n; j++)

    {

    if (datecmp(&date[j], &p->)

    {

    for (i = 0; i < 40; i++)

    {

    if (fltlist[i].m_fltno == p->

    people[i][j]++;

    }

    }

    }

    }

    for (i = 0; i < 40; i++)

    {

    if (fltlist[i].m_fltno != -1)

    {

    printf("%d %s--%s--%s ", fltlist[i].m_fltno, fltlist[i].m_szFrom,

    fltlist[i].m_szPass, fltlist[i].m_szTo);

    for (j = 0; j < n; j++)

    printf("%d ", people[i][j]);

    printf("\n");

    }

    }

    printf("繼續查詢嗎(y/n)");

    ClearBuffer();

    c = getchar();

    }

    }

    void Manage(FLIGHT fltlist[], PNODE psglist)

    {

    for (;;)

    {

    char c;

    system("cls");

    printf("航班管理\n");

    printf("~~~~~~~~\n");

    printf("1.查詢航班基本情況\n");

    printf("2.對某天航班飛行情況管理\n");

    printf("3.近期航班飛行情況管理\n");

    printf("4.取消航班\n");

    printf("5.新增航班\n");

    printf("6.返回\n");

    printf("\n請選擇1-6:");

    c = getchar();

    switch (c)

    {

    case "1":

    Query(fltlist);

    break;

    case "2":

    OneDay(fltlist, psglist);

    break;

    case "3":

    MultiDay(fltlist, psglist);

    break;

    case "4":

    Del(fltlist);

    break;

    case "5":

    Add(fltlist);

    break;

    case "6":

    break;

    default:

    continue;

    }

    if (c == "6")

    break;

    }

    }

    void SaveFlight(FLIGHT fltlist[])

    {

    FILE *fp;

    if ((fp = fopen("", "wb")) == NULL)

    {

    printf("不能打開文件,航班數據無法保存。\n");

    fclose(fp);

    return;

    }

    fwrite(&fltlist[0], sizeof(FLIGHT), 40, fp);

    fclose(fp);

    printf("航班數據已保存至文件。\n");

    }

    void SavePassenger(PNODE psglist)

    {

    FILE *fp;

    PNODE p;

    int n = GetPsgCount(psglist);

    unlink("");

    if (n == 0)

    return;

    if ((fp = fopen("", "wb")) == NULL)

    {

    printf("不能打開文件,乘客數據無法保存。\n");

    fclose(fp);

    return;

    }

    fwrite(&n, sizeof(int), 1, fp);

    for (p = psglist->next; p != NULL; p = p->next)

    fwrite(&p->m_psg, sizeof(PASSENGER), 1, fp);

    fclose(fp);

    printf("乘客數據已保存至文件。\n");

    }

    void Quit(FLIGHT fltlist[], PNODE psglist)

    {

    SaveFlight(fltlist);

    SavePassenger(psglist);

    }

    void main(void)

    {

    FLIGHT fltlist[40];

    NODE psglist;

    ReadFlight(fltlist);

    ReadPassenger(&psglist);

    for (;;)

    {

    char c;

    system("cls");

    printf("飛機訂票系統\n");

    printf("~~~~~~~~~~~~\n");

    printf("---主菜單---\n");

    printf("1.訂票\n");

    printf("2.退票\n");

    printf("3.航班管理\n");

    printf("4.查詢\n");

    printf("5.退出\n");

    printf("\n請選擇1-5:");

    c = getchar();

    switch (c)

    {

    case "1":

    Book(fltlist, &psglist);

    break;

    case "2":

    /*c_ticket(fltlist, &psglist);*/

    break;

    case "3":

    Manage(fltlist, &psglist);

    break;

    case "4":

    query(fltlist, &psglist);

    break;

    case "5":

    Quit(fltlist, &psglist);

    break;

    default:

    continue;

    }

    if (c == "5")

    break;

    }

    ClearPsgList(&psglist);

    }

    實驗3 約瑟夫環(Joseph)

    任務:編號是1,2,……,n的n個人按照順時針方向圍坐一圈,每個人只有一個密碼(正整數)。一開始任選一個正整數作為報數上限值m,從第一個仍開始順時針方向自1開始順序報數,報到m時停止報數。報m的人出列,將他的密碼作為新的m值,從他在順時針方向的下一個人開始重新從1報數,如此下去,直到所有人全部出列為止。設計一個程序來求出出列順序。

    要求:利用單向循環鏈表存儲結構模擬此過程,按照出列的順序輸出各個人的編號。

    測試數據:m的初值為20,n=7 ,7個人的密碼依次為3,1,7,2,4,7,4,首先m=6,則正確的輸出是什么

    輸入數據:建立輸入處理輸入數據,輸入m的初值,n ,輸入每個人的密碼,建立單循環鏈表。

    輸出形式:建立一個輸出函數,將正確的輸出序列

    實驗內容:

    實驗源程序:

    #include

    using namespace std;

    #define N 7

    typedef struct node

    {

    int data;

    int sercet;

    struct node *next;

    }ListNode;

    typedef ListNode *LinkList;

    .再依次5的倍數的牌翻一次,6的,7的 直到 以52為基數的 翻過,輸出:這時正面向上的牌有哪些

    實驗內容:

    實驗源程序:

    #include

    using namespace std;

    void Pcout1(int i,int j)

    {

    switch(i)

    {

    case 0:cout

    第四篇: 數據結構實驗報告總結

    電子信息工程學院2014級《數據結構》實驗報告
    姓名:

    譚粵薇學號222014333210101
    實驗項目實驗內容
    實驗三線性表及其應用(Ⅲ)
    二、實驗內容
    采用鏈式存儲結構實現:
    一元稀疏多項式的計算。要求實現多項式存儲、輸出顯示、相加、相減、相乘。
    (具體要求見題集第81頁1.5)
    算法設計與程序實現:算法分析
    (1輸入并建立多項式

    (2)按指數降序排列輸出多項式


    電子信息工程學院2014級《數據結構》實驗報告

    (3)建立多項式a+b、a-b
    a.將兩個鏈表中非空的部分進行指數比較
    b.指數不等時,將指數小的數據復制到新的結點中,指數大的繼續與下一個結點比較
    c.指數相等時,將兩結點的系數合并后如果不為0則開辟新結點

    (4)計算a*b
    外循環遍歷pa表,內循環遍歷pb表,使pa的任一項乘以pb的每一項再合并簡化

    核心程序



    電子信息工程學院2014級《數據結構》實驗報告
    voidDestroyPolyn(Polynp{Polynq1,q2;q1=p->next;q2=q1->next;while(q1->next{
    free(q1;q1=q2;q2=q2->next;}}
    voidPrintPolyn(PolynP{Polynq=P->next;intflag=1;//項數計數if(!q{
    putchar("0";printf("\n";return;}while(q{
    if(q->coef>0&&flag!=1putchar("+";if(q->coef!=1&&q->coef!=-1{
    printf("%g",q->coef;if(q->expn==1putchar("X";
    elseif(q->expnprintf("X^%d",q->expn;}
    else{
    if(q->coef==1{
    if(!q->expnputchar("1";elseif(q->expn==1putchar("X";elseprintf("X^%d",q->expn;}
    if(q->coef==-1{
    if(!q->expnprintf("-1";elseif(q->expn==1printf("-X";elseprintf("-X^%d",q->expn;}

    第五篇: 數據結構實驗報告總結




    編號:

    江西理工大學

    數據結構課程設計報告
    班級:
    學號:姓名:時間:

    指導教師:




    目錄

    第一章需求分析..........................................1
    1.1實驗內容概述......................................11.2實驗目的概述......................................1
    第二章概要設計......................................2
    2.1抽象數據類型定義..................................22.2程序流程圖........................................22.3鏈表分析..........................................4
    第三章詳細設計......................................5
    3.1定義關鍵步驟......................................53.2定義關鍵函數......................................63.3主函數............................................9
    第四章調試分析.....................................10
    4.1問題討論.........................................104.2經驗與體會.......................................124.3測試結果.........................................12
    第五章總結分析.....................................13第六章參考文獻.....................................13附錄源程序................................................................................14




    第一章需求分析
    1.1實驗內容概述
    ?紙牌游戲
    編號為1-52張牌,正面向上,從第2張開始,以2為基數,是2的倍數的牌翻一次,直到最后一張牌;然后,從第3張開始,以3為基數,是3的倍數的牌翻一次,直到最后一張牌;然后…從第4張開始,以4為基數,是4的倍數的牌翻一次,直到最后一張牌;...再依次5的倍數的牌翻一次,6的,7的直到以52為基數的翻過,輸出:這時正面向上的牌有哪些?要求:用數組、鏈表結構實現,采用遞歸方法。
    ?哈夫曼編碼
    設計出下面字符表的哈夫曼編碼對應的二叉樹,并輸出每個字符的哈夫曼編碼。字符
    m
    n44
    o12
    p17
    q9
    r5
    出現頻率(%)13
    1.2實驗目的概述
    ?紙牌游戲
    ①了解線性表的特性,以及它們在實際問題中的應用。②掌握順序表和鏈表的實現方法,以及它們的基本操作。
    ③掌握線性表的鏈式存儲結構——單鏈表的定義及其C語言實現。④掌握線性表在鏈式存儲結構——單鏈表中的各種基本操作。⑤通過用鏈表編程實現問題的解決,提高自身的問題解決能力。
    ?哈夫曼編碼
    以字符的頻度為權值,建立哈夫曼樹,求哈夫曼編碼。根據字符及權值得到其相應的編碼。

    第1頁

    熱門標簽:
    《數據結構實驗報告總結范文五篇.doc》
    將本文的Word文檔下載到電腦,方便收藏和打印
    推薦度:

    文檔為doc格式

    文章下載

    《數據結構實驗報告總結范文五篇.doc》

    VIP請直接點擊按鈕下載本文的Word文檔下載到電腦,請使用最新版的WORD和WPS軟件打開,如發現文檔不全可以聯系客服申請處理。

    文檔下載
    VIP免費下載文檔
    youjizzxxx