上海xx 雙向鏈表 面試題 list node

#include<iostream>  
#include<cstdio>  
#include<string>  
#include<malloc.h>  
using namespace std;  
  
typedef struct mylist  
{  
    void* head;  
    void* tail;  
} List,*pList;  
  
typedef struct mynode  
{  
    void* next;  
    void* prev;  
    int data;  
} Node,*pNode;  
  
pList createlist()  
{  
    pList root;  
    pNode temp;  
    int n;  
    root = (pList)malloc(sizeof(List));  
    root->head = NULL;  
    root->tail = NULL;  
    printf("input data number:");  
    scanf("%d",&n);  
    if(n&&NULL==root->head)  
    {  
        temp = (pNode)malloc(sizeof(Node));  
        printf("data1:");  
        scanf("%d",&temp->data);  
        temp->next = (pList)root;  
        temp->prev = (pList)root;  
        root->head = (pNode)temp;  
        root->tail = (pNode)temp;  
        n--;  
    }  
    for(int i=1; i<=n ; i++)  
    {  
        temp = (pNode)malloc(sizeof(Node));  
        printf("data%2d:",i);  
        scanf("%d",&temp->data);  
        temp->next = (pList)root;  
        temp->prev = (pNode)root->tail;  
        ((pNode)(root->tail))->next = (pNode)temp;  
        root->tail = (pNode)temp;  
    }  
    return root;  
}  
  
void printlist(pList root)  
{  
    pNode temp = (pNode)root->head;  
    int i = 1;  
    while(temp!=(pNode)root)  
    {  
        printf("data%2d:%d\n",i++,temp->data);  
        temp = (pNode)temp->next;  
    }  
  
    /*temp = (pNode)root->tail; 
    while(temp!=(pNode)root) 
    { 
        printf("data%2d:%d\n",--i,temp->data); 
        temp = (pNode)temp->prev; 
    }*/  
}  
  
int main()  
{  
    pList root;  
    root = createlist();  
    printlist(root);  
}  

雙向鏈表的面試題要求list和node是不同的結(jié)構(gòu)體抬驴,所以這里使用的void指針
1聲明LIst和Node結(jié)構(gòu)體
2創(chuàng)建鏈表
3尾部追加
4頭部刪除
都很簡單领曼,我只寫了創(chuàng)建 打印時測試用的,主要就是試試void
類型的指針用法
上面的所有都加上了顯示類型轉(zhuǎn)換
以下去掉了不必要的類型轉(zhuǎn)換
總結(jié)一下搀玖,
1.當給void類型指針賦值的時候不需要顯示類型轉(zhuǎn)換
2.void
給void賦值不需要轉(zhuǎn)換
3.當void
給其他類型的指針賦值時需要顯示類型轉(zhuǎn)換
4.當void*與不同類型的指針比較的時候需要顯示類型轉(zhuǎn)換
5.當需要鏈式的時候需要顯示類型轉(zhuǎn)換余境。
注釋標記對應(yīng)1,2灌诅,3芳来,4,5的情況
注意:不轉(zhuǎn)換不等于不需要轉(zhuǎn)換猜拾,而是編譯器隱式轉(zhuǎn)換了

#include<iostream>  
#include<cstdio>  
#include<string>  
#include<malloc.h>  
using namespace std;  
  
typedef struct mylist  
{  
    void* head;  
    void* tail;  
} List,*pList;  
  
typedef struct mynode  
{  
    void* next;  
    void* prev;  
    int data;  
} Node,*pNode;  
  
pList createlist()  
{  
    pList root;  
    pNode temp;  
    int n;  
    root = (pList)malloc(sizeof(List));         //malloc屬于情況3  
    root->head = NULL;  
    root->tail = NULL;  
    printf("input data number:");  
    scanf("%d",&n);  
    if(n&&NULL==root->head)  
    {  
        temp = (pNode)malloc(sizeof(Node));   //3  
        printf("data1:");  
        scanf("%d",&temp->data);  
        temp->next = root;            //1  
        temp->prev = root;            //1  
        root->head = temp;           //1  
        root->tail = temp;              //1  
        n--;  
    }  
    for(int i=1; i<=n ; i++)  
    {  
        temp = (pNode)malloc(sizeof(Node));  //3  
        printf("data%2d:",i);  
        scanf("%d",&temp->data);  
        temp->next = root;                   //1  
        temp->prev = root->tail;          //2  
        ((pNode)(root->tail))->next = temp; //5  
        root->tail = temp;  //1  
    }  
    return root;  
}  
  
void printlist(pList root)  
{  
    pNode temp = (pNode)root->head;   //3  
    int i = 1;  
    while(temp!=(pNode)root)                  //4  
    {  
        printf("data%2d:%d\n",i++,temp->data);  
        temp = (pNode)temp->next;          //3  
    }  
  
    /*temp = (pNode)root->tail; 
    while(temp!=(pNode)root) 
    { 
        printf("data%2d:%d\n",--i,temp->data); 
        temp = (pNode)temp->prev; 
    }*/  
}  
  
int main()  
{  
    pList root;  
    root = createlist();  
    printlist(root);  
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末即舌,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子挎袜,更是在濱河造成了極大的恐慌顽聂,老刑警劉巖肥惭,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異紊搪,居然都是意外死亡蜜葱,警方通過查閱死者的電腦和手機脐供,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進店門优炬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蚣抗,“玉大人寡壮,你說我怎么就攤上這事糊昙∶闹担” “怎么了馍盟?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵缘圈,是天一觀的道長梆奈。 經(jīng)常有香客問我野崇,道長,這世上最難降的妖魔是什么鉴裹? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任舞骆,我火速辦了婚禮,結(jié)果婚禮上径荔,老公的妹妹穿的比我還像新娘督禽。我一直安慰自己,他們只是感情好总处,可當我...
    茶點故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布狈惫。 她就那樣靜靜地躺著,像睡著了一般鹦马。 火紅的嫁衣襯著肌膚如雪胧谈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天荸频,我揣著相機與錄音菱肖,去河邊找鬼。 笑死旭从,一個胖子當著我的面吹牛稳强,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播和悦,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼退疫,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了鸽素?” 一聲冷哼從身側(cè)響起褒繁,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎馍忽,沒想到半個月后棒坏,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體燕差,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年俊抵,在試婚紗的時候發(fā)現(xiàn)自己被綠了谁不。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡徽诲,死狀恐怖刹帕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情谎替,我是刑警寧澤偷溺,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站钱贯,受9級特大地震影響挫掏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜秩命,卻給世界環(huán)境...
    茶點故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一尉共、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧弃锐,春花似錦袄友、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至旋廷,卻和暖如春鸠按,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背饶碘。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工目尖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人扎运。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓卑雁,卻偏偏與公主長得像,于是被迫代替她去往敵國和親绪囱。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,969評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 一、基本數(shù)據(jù)類型 注釋 單行注釋:// 區(qū)域注釋:/* */ 文檔注釋:/** */ 數(shù)值 對于byte類型而言...
    龍貓小爺閱讀 4,265評論 0 16
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法篮赢,類相關(guān)的語法齿椅,內(nèi)部類的語法琉挖,繼承相關(guān)的語法,異常的語法涣脚,線程的語...
    子非魚_t_閱讀 31,639評論 18 399
  • 1.OC里用到集合類是什么示辈? 基本類型為:NSArray,NSSet以及NSDictionary 可變類型為:NS...
    輕皺眉頭淺憂思閱讀 1,378評論 0 3
  • 題目類型 a.C++與C差異(1-18) 1.C和C++中struct有什么區(qū)別遣蚀? C沒有Protection行為...
    阿面a閱讀 7,662評論 0 10
  • 近來從各種渠道頻繁讀到與“don't judge”相關(guān)的文章矾麻,內(nèi)心的洪荒之力命令我要寫點什么了。 乍看希言的標題芭梯,...
    希希言自然閱讀 893評論 0 1