精品日本亚洲一区二区三区,99久久精品免费观看国产,99久久免费精品,亚洲精品国产一区二区成人,日本亚洲精品一区二区三区四区,国产亚洲精品成人久久网站,久久亚洲男人第一AV网站,精品国产高清一区二区广区,久久精品五月天很黄很艳女TV

考研論壇

標題: 一道程序題求解 [打印本頁]

作者: cz009    時間: 2016-10-21 09:13
標題: 一道程序題求解
這里printf是c語言的函數吧?能直接傳整型當參數?能的話輸出什么。。我下vc++是跑不了

作者: UncleLoveLoli    時間: 2016-10-21 22:13
本帖最后由 UncleLoveLoli 于 2016-10-21 22:14 編輯


能看到嗎.

作者: cz009    時間: 2016-10-22 09:18
UncleLoveLoli 發表于 2016-10-21 22:13
能看到嗎.

嗯嗯,謝謝,不知道怎么現在腦子越來越不靈活了(?_?)
作者: 我要研了    時間: 2016-10-24 11:23
你是把偽碼當C語言代碼了吧,它的printf只是表示將他們輸出而已。別拘泥與格式。
作者: cz009    時間: 2016-10-24 19:27
我要研了 發表于 2016-10-24 11:23
你是把偽碼當C語言代碼了吧,它的printf只是表示將他們輸出而已。別拘泥與格式。 ...

嗯嗯,主要這代碼也太偽了~之前見的printf都是寫具體的=。=
作者: cz009    時間: 2016-10-30 17:30
UncleLoveLoli 發表于 2016-10-21 22:13
能看到嗎.

能再看看這題嗎

作者: cz009    時間: 2016-10-30 17:31
我要研了 發表于 2016-10-24 11:23
你是把偽碼當C語言代碼了吧,它的printf只是表示將他們輸出而已。別拘泥與格式。 ...

能再幫忙看下這題嗎

作者: UncleLoveLoli    時間: 2016-11-7 11:31
感冒了,才看到.

[attach]1708903[/attach]

代碼如下:
#include <stdio.h>
#include <stdlib.h>

typedef int ElemType;

typedef struct LNode
{
        ElemType data;
        struct LNode *next;

}LNode;

LNode* LNodeCreate(int len)//創建長度為n的循環鏈表,帶頭結點,頭指針.
{

        LNode* headp = NULL;//創建頭指針
        headp = (LNode *)malloc(sizeof(LNode));//創建頭結點.
        headp->data = 0;
        printf("頭結點data = 0\n");
        int data;

        LNode *p = NULL;
        LNode *q = NULL;

        p = headp;
        q = headp;

        for (int i = 1; i < len; i++)//長度是n,從(0,n-1);
        {
                printf("請輸入第%d鏈表的值: ", i);
                scanf("%d", &data);

                q = (LNode *)malloc(sizeof(LNode));
                q->data = data;
                q->next = NULL;

                p->next = q;
                p = q;

       
        }
        q->next = headp;
        q = headp;
        p = headp;
        return headp;
}


// 遍歷循環鏈表.

void print(LNode* p)
{
       
        LNode* p1 = p;
        while (p1->next != p)
        {
                printf("%d ", p1->data);
                p1 = p1->next;
        }
        printf("%d ", p1->data);
        printf("\n");

}



void Split(LNode *s, LNode *q)
{

        LNode *p = NULL;
        p = s;

        while (p->next != q)
        {
                printf("%d ", p->data);
                p = p->next;

        }
        printf("%d ", p->data);
        printf("\n");
        p->next = s;
}


void AtoBB(LNode *pa, LNode *pb)
{
        //pa和pb分別指向單循環鏈表(結點數>1)中的兩個結點.

        Split(pa, pb);

        Split(pb, pa);
}


int main()
{
        printf("請輸入循環鏈表的長度:");
        int length = 0;
        scanf("%d", &length);
        LNode* head = LNodeCreate(length);
       
         print(head);//遍歷循環鏈表

        int pa_num;
        int pb_num;

        LNode *pa = NULL;
        LNode *pb = NULL;
        printf("pa 指向單循環鏈表的第幾個結點(1≤num≤%d): ", length);
        scanf("%d", &pa_num);
        LNode* p1 = NULL;
        p1 = head;
        for (int i = 0; i < pa_num-1 ; i++)
        {
                p1 = p1->next;
        }
        pa = p1;
       
        printf("pb指向單循環鏈表的第幾個結點(1≤num≤%d): ", length);
        scanf("%d", &pb_num);
        LNode* p2 = head;
        for (int i = 0; i < pb_num-1 ; i++)
        {
                p2 = p2->next;
        }
        pb = p2;
       
        AtoBB(pa, pb);
        free(head);       
        return 0;

}
作者: UncleLoveLoli    時間: 2016-11-7 11:32


作者: cz009    時間: 2016-11-7 22:16
UncleLoveLoli 發表于 2016-11-7 11:31
感冒了,才看到.

謝謝大神,祝大神感冒快點好,今年一定考上哈~果然這題是少一個p=s, 意思就是我可以簡述為split(a,b)函數主要把a結點到b結點前一個結點的所有結點都抽出來,AtoBB 就是調用兩次這個算法,第一次已經抽出a,b之間的鏈,第二次再把剩余的鏈抽出?
作者: UncleLoveLoli    時間: 2016-11-9 21:21
你很聰明.
我不是大神.
作者: cz009    時間: 2016-12-10 16:43
UncleLoveLoli 發表于 2016-11-9 21:21
你很聰明.
我不是大神.

看來是考研幫web論壇有bug 這個問題我現在上手機app才看到您這段回復,謝謝哈(((o(*?▽?*)o)))




歡迎光臨 考研論壇 (http://www.5522pp.com/) Powered by Discuz! X3.2