鏈表

線性表的順序存儲(chǔ)結(jié)構(gòu)在查找指定位置的元素時(shí)操作較快猛拴,但是在插入和刪除操作的時(shí)候需要移動(dòng)大量數(shù)據(jù)的位置,操作較為耗時(shí)瞧柔,造成這種結(jié)果的原因在于順序存儲(chǔ)是開(kāi)辟一塊連續(xù)的內(nèi)存空間漆弄,各個(gè)數(shù)據(jù)之間緊緊相鄰;那么解決順序存儲(chǔ)插入和刪除問(wèn)題就需要采取另外一種存儲(chǔ)結(jié)構(gòu)--鏈?zhǔn)酱鎯?chǔ)造锅;

線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)

在順序存儲(chǔ)結(jié)構(gòu)中數(shù)據(jù)元素只要存儲(chǔ)數(shù)據(jù)元素信息就可以了撼唾,而鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)還需要存儲(chǔ)下一個(gè)結(jié)點(diǎn)的內(nèi)存地址,即每個(gè)數(shù)據(jù)元素成為一個(gè)獨(dú)立的結(jié)點(diǎn)哥蔚,結(jié)點(diǎn)包含數(shù)據(jù)信息和地址信息兩個(gè)部分倒谷;n個(gè)這樣的結(jié)點(diǎn)就構(gòu)成了鏈表,

單鏈表

因?yàn)榻Y(jié)點(diǎn)中只存在一個(gè)地址指針糙箍,即該鏈表又稱之為單鏈表

頭結(jié)點(diǎn)

排在單鏈表的第一個(gè)結(jié)點(diǎn)前的結(jié)點(diǎn)叫頭結(jié)點(diǎn)

頭指針

鏈表第一個(gè)結(jié)點(diǎn)的存儲(chǔ)位置即為頭指針/ 頭結(jié)點(diǎn)中存放的指針即為頭指針

單鏈表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)

typedef int ElemType;
typedef struct Node{
    ElemType data;
    struct Node * next;
}Node;
typedef struct Node* LinkList;  

一個(gè)結(jié)點(diǎn)的構(gòu)成包含數(shù)據(jù)域和指針區(qū)域渤愁;

單鏈表的初始化

LinkList linkListInit(){
Node* L ;
L = (Node*)malloc(sizeof(Node));
if (L == NULL) {
    printf("申請(qǐng)內(nèi)存空間失敗\n");
}
L ->next = NULL;
return L;
}     

創(chuàng)建單鏈表之頭插入方法

LinkList linkListCreateHeaderMethod(int numberOfNode){
Node* L ;
L = (Node*)malloc(sizeof(Node));
if (L==NULL) {
    return NULL;
}
L->next = NULL;
for (int i =0; i<numberOfNode; i++) {
    Node *p;
    p =(Node*) malloc(sizeof(Node));
    p -> data = i ;
    p->next = L->next;   //將結(jié)點(diǎn)插入到表頭L-->|3|-->|2|-->|1|-->NULL
    L -> next = p;
}
return L;
}  

頭插入法創(chuàng)建單鏈表是在頭指針和第一個(gè)結(jié)點(diǎn)之間完成插入操作,新節(jié)點(diǎn)的指針存放的是上一個(gè)作為第一個(gè)結(jié)點(diǎn)的地址即L->next深夯;然后再講L->next指向新節(jié)點(diǎn)p即可抖格;

創(chuàng)建單鏈表之尾插入方法

LinkList linkListCreateTailMethod(int numberOfNode){
Node* L ;
L = (Node*)malloc(sizeof(Node));
if (L==NULL) {
    return NULL;
}
L -> next = NULL;
Node* tempL = L;
for (int i = 0; i<numberOfNode; i++) {
    Node* p ;
    p = (Node*)malloc(sizeof(Node));
    p ->data = i ;
    tempL -> next = p ;
    tempL = p ;
}
tempL ->next = NULL;
return L;
} 

尾插入就是將新建立的結(jié)點(diǎn)放在鏈表的最后;

單鏈表的插入操作

int linkListInsert(LinkList list ,int index,int e){
    Node* pre ;
    pre = list;
    for (int i = 1; i<index; i++) {
        pre = pre ->next;
    }
    if (pre) {
        Node* newNode;
        newNode  = (Node*)malloc(sizeof(Node));
        newNode->data = e ;
        newNode->next = pre->next;
        pre->next = newNode;
        return 1;
    }
    return 0;
} 

單鏈表的刪除操作

int linkListDeleteNode(LinkList list ,int e){
    Node *p,*pre = NULL;                   //pre為前驅(qū)結(jié)點(diǎn)咕晋,p為查找的結(jié)點(diǎn)雹拄。
    p = list->next;
    while(p->data != e)              //查找值為x的元素
    {
        pre = p;
        p = p->next;
    }
    pre->next = p->next;          //刪除操作,將其前驅(qū)next指向其后繼掌呜。
    free(p);
    return 1;
}  

單鏈表返回指定位置的結(jié)點(diǎn)數(shù)據(jù)

int GetElem(LinkList list,int index,ElemType *e){
    int i=1;
    LinkList p ;
    p = list ->next; // 默認(rèn)鏈表名作為第一個(gè)結(jié)點(diǎn)的指針
    while (i<index&&p) {
        p = p ->next;
        i++;
    }
    if (!p||i>index) {
       return 0;
    }else{
        *e = p->data;
        return 1;
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末滓玖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子质蕉,更是在濱河造成了極大的恐慌势篡,老刑警劉巖翩肌,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異禁悠,居然都是意外死亡念祭,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)绷蹲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)棒卷,“玉大人顾孽,你說(shuō)我怎么就攤上這事祝钢。” “怎么了若厚?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵拦英,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我测秸,道長(zhǎng)疤估,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任霎冯,我火速辦了婚禮铃拇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘沈撞。我一直安慰自己慷荔,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布缠俺。 她就那樣靜靜地躺著显晶,像睡著了一般。 火紅的嫁衣襯著肌膚如雪壹士。 梳的紋絲不亂的頭發(fā)上磷雇,一...
    開(kāi)封第一講書(shū)人閱讀 51,708評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音躏救,去河邊找鬼唯笙。 笑死,一個(gè)胖子當(dāng)著我的面吹牛盒使,可吹牛的內(nèi)容都是我干的崩掘。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼忠怖,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼呢堰!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起凡泣,我...
    開(kāi)封第一講書(shū)人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤枉疼,失蹤者是張志新(化名)和其女友劉穎皮假,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體骂维,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡惹资,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了航闺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片褪测。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖潦刃,靈堂內(nèi)的尸體忽然破棺而出侮措,到底是詐尸還是另有隱情,我是刑警寧澤乖杠,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布分扎,位于F島的核電站,受9級(jí)特大地震影響胧洒,放射性物質(zhì)發(fā)生泄漏畏吓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一卫漫、第九天 我趴在偏房一處隱蔽的房頂上張望菲饼。 院中可真熱鬧,春花似錦列赎、人聲如沸宏悦。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)肛根。三九已至,卻和暖如春漏策,著一層夾襖步出監(jiān)牢的瞬間派哲,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工掺喻, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留芭届,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓感耙,卻偏偏與公主長(zhǎng)得像褂乍,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子即硼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

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

  • include<iostream> using namespace std; //單鏈表 typedef stru...
    jmychou閱讀 428評(píng)論 0 0
  • 單鏈表樣式樣式: 頭指針--->頭結(jié)點(diǎn)---->a1---> ... --->an頭指針:指的是鏈表指向第一...
    fuxi閱讀 291評(píng)論 0 0
  • 有頭鏈表(注意:頭結(jié)點(diǎn)有的地方是全局變量) 初學(xué)者學(xué)自于大話數(shù)據(jù)結(jié)構(gòu)逃片,不足及錯(cuò)誤的地方請(qǐng)讀者提出來(lái),謝謝只酥。 可加 ...
    lxr_閱讀 798評(píng)論 0 2
  • 梁翾閱讀 148評(píng)論 0 4
  • 早上起床褥实,看到秋英群里發(fā)的下雪了呀狼,大家路上注意安全的暖心提醒。我看了看表损离,這樣的天氣如果快點(diǎn)哥艇,我可以不遲到。我?guī)褪?..
    夢(mèng)游天姥吟留別閱讀 382評(píng)論 0 0