bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

C語言之鏈表練習題-創新互聯

第3關:單鏈表逆置

本關需要你設計一個程序,實現單鏈表的逆置。

成都創新互聯公司專注于雨花網站建設服務及定制,我們擁有豐富的企業做網站經驗。 熱誠為您提供雨花營銷型網站建設,雨花網站制作、雨花網頁設計、雨花網站官網定制、小程序開發服務,打造雨花網絡公司原創品牌,更為您提供雨花網站排名全網營銷落地服務。

單鏈表的逆置分為兩種方法:頭插法和就地逆置法,這兩種方法雖然都能夠達到逆置的效果,但還是有著不小的差別。

頭插法

逆置鏈表初始為空,表中節點從原鏈表中依次“刪除”,再逐個插入逆置鏈表的表頭(即“頭插”到逆置鏈表中),使它成為逆置鏈表的“新”的第一個結點,如此循環,直至原鏈表為空。

就地逆置法

先假定有一個函數,可以將以head為頭結點的單鏈表逆序,并返回新的頭結點。利用這個函數對問題進行求解:將鏈表分為當前表頭結點和其余部分,遞歸的過程就是,先將表頭結點從鏈表中拆出來,然后對其余部分進行逆序,最后將當前的表頭結點鏈接到逆序鏈表的尾部。遞歸的終止條件就是鏈表只剩一個節點時,直接返回這個節點。

編程要求

  • 按程序提示輸入并創建一個單鏈表,帶有頭結點;

  • 可自定義鏈表的長度,可自定義鏈表儲存的數據類型,注意更改相應的輸入輸出方式;

  • 實現單鏈表的逆置,直觀地輸出結果。

效果如下: 輸入:

61 212 7 8 0 2

輸出:

鏈表逆置前的數據:

1 212 7 8 0 2

鏈表逆置后的數據:

2 0 8 7 212 1

#include#include#includetypedef struct node {
    int data;
    struct node *next;
}NODE,* PNODE;
//函數聲明
PNODE CreateList();
PNODE ReverseList(PNODE phead);
//CreateList函數創建鏈表
PNODE CreateList(){//先用尾插法創建一個鏈表
    //創建一個頭節點
    PNODE phead=(PNODE)malloc(sizeof(NODE));
    phead->next=NULL;

    int len=0,i,val;
    PNODE p=phead;//p指向頭指針phead
    scanf("%d",&len);//輸入的鏈表長度len
    for(i=0;inext = pNew;
        pNew->data = val;

        p=pNew;
    }
    p->next=NULL;
    return phead;
}
//將單鏈表逆置的ReverseList函數
PNODE ReverseList(PNODE phead){
    PNODE pHEAD=(PNODE)malloc(sizeof(NODE));//新建一個頭節點pHEAD,然后依次讀入phead中的每一個數據,并用頭插法創建一個以pHEAD為頭指針的新鏈表
    pHEAD->next=NULL;
    PNODE p = pHEAD->next;
    int val;
    PNODE q=phead->next;//p指向頭指針phead
    while(q!=NULL){
        val = q->data;
        q= q->next;
        PNODE pNew=(PNODE)malloc(sizeof(NODE));//動態分配一個新節點pNew
        pHEAD->next = pNew;
        pNew->data = val;
        pNew->next = p;
        p=pNew;
    }
    //p=pHead;
    return pHEAD;

}
void ShowList(PNODE phead){//遍歷鏈表
    PNODE p = phead->next;
    while(p!=NULL){
        printf("%d ",p->data);
        p=p->next;
    }
    printf("\n");
    return;
}
int main(void)
{
    PNODE phead;
    phead = CreateList();
    printf("鏈表逆置前的數據:\n");
    ShowList(phead);
    
    phead = ReverseList(phead);
    printf("鏈表逆置后的數據:\n");
    ShowList(phead);
    return 0;
}
第2關:統計單鏈表中的節點數

本小節需要你統計單鏈表中的節點數。

相關知識

根據上一關我們知道怎么創建單鏈表了,那么這一關讓我們鞏固一下單鏈表的知識。

編程要求

請仔細閱讀右側代碼,根據方法內的提示,在Begin - End區域內進行代碼補充,具體任務如下:

編寫程序,從鍵盤輸入一串整數以及整數的個數,以單鏈表形式存儲起來,計算單鏈表中結點的個數,輸出單鏈表的數據及結點的個數。

效果如下:

輸入:

8

12367802

輸出:

12367802

8

#include#include#includetypedef struct node {
    int data;
    struct node *next;
}NODE,*PNODE;

int length_list(PNODE phead){
    int cnt=0;
    PNODE p = phead;
    while(p->next!=NULL){
        cnt++;
        p=p->next;
    }

    return cnt;

}
PNODE CreatList(){
    //創建頭節點
    PNODE phead = (PNODE)malloc(sizeof(NODE));
    phead->next = NULL;

    int i,len;
    scanf("%d",&len);
    PNODE p = phead;
    for(i=0;idata);
        p->next = pNew;
        pNew->next = NULL;
        p=pNew;
    }
    return phead;
}
void ShowList(PNODE phead){
    PNODE p = phead->next;
    while(p!=NULL){
        printf("%d ",p->data);
        p=p->next;
    }
    printf("\n");
    return;
}
int main(void)
{
    PNODE phead;
    phead = CreatList();
    ShowList(phead);
    printf("%d", length_list(phead));
    return 0;
}
第1關:建單向鏈表

本關需要你建立一個帶頭結點的單向鏈表。

相關知識

什么是鏈表?鏈表和二叉樹是C語言數據結構的基礎和核心。

鏈表有多種形式,它可以是單鏈接的或者雙鏈接的,可以是已排序的或未排序的,可以是循環的或非循環的。

編程要求

請仔細閱讀右側代碼,根據方法內的提示,在Begin - End區域內進行代碼補充,具體任務如下:

鍵盤輸入一組元素,建立一個帶頭結點的單向鏈表(無序)。

要求:

  • 輸入整數的長度以及整數;

  • 輸出無序的單向鏈表。

效果如下:

輸入:

5

1 23 4 8 9

輸出:

1 23 4 8 9

#include#includetypedef struct node {
    int data;
    struct node *next;
}NODE,* PNODE;

PNODE CreateList(){
    //創建一個頭節點
    PNODE phead=(PNODE)malloc(sizeof(NODE));
    phead->next=NULL;

    int len=0,i,val;
    PNODE p=phead;//p指向頭指針phead
    scanf("%d",&len);//輸入的鏈表長度len
    for(i=0;inext = pNew;
        pNew->data = val;
        pNew->next = NULL;
        p=pNew;
    }
    //p=pHead;
    return phead;
}

void ShowList(PNODE phead){//遍歷鏈表
    PNODE p = phead->next;
    while(p!=NULL){
        printf("%d ",p->data);
        p=p->next;
    }
    return;
}
int main(void)
{
    PNODE phead;
    phead = CreateList();
    ShowList(phead);
    return 0;
}

如果文章對你有用的話,可不可以點一個贊鼓勵我呢^o^

你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧

網頁名稱:C語言之鏈表練習題-創新互聯
轉載源于:http://vcdvsql.cn/article20/dsoeco.html

成都網站建設公司_創新互聯,為您提供企業網站制作、云服務器、定制開發App開發、品牌網站設計、Google

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

微信小程序開發