在寫過單鏈表之後再來寫雙鏈表會發現,雙鏈表和單鏈表在實現上的主要區別在於:雙鏈表每個節點需要考慮她的前驅和後繼,因此在插入和刪除操作的時候就需要格外注意對鍊錶最後乙個元素的操作,因為最後乙個元素的next指向的是null,所以在寫插入和刪除操作的時候需要判斷是不是對最後乙個節點操作。
#include
#include
using namespace std;
typedef struct lnode
lnode, *linklist;
linklist initlinklist(linklist &l);
bool insert(linklist &l, int val, int i);
int getlength(linklist &l);
int del(linklist &l,int i);
void printlist(linklist &l);
linklist initlinklist(linklist &l)
s = (linklist)malloc(sizeof(lnode));
s->
data
= val;
p->next = s;
s->pev = p;
s->next =
null;
return
true;
}bool insert(linklist &l, int val, int i)
s = (linklist)malloc(sizeof(lnode));
s->
data
= val;
s->next = p;
p->pev->next = s;
s->pev = p->pev;
p->pev = s;
}return
true;
}int getlength(linklist &l)
return cnt;
}int del(linklist &l, int i)
p->pev->next =
null;
num = p->
data;
free(p);
p =null;
}else
p->pev->next = p->next;
p->next->pev = p->pev;
num = p->
data;
free(p);
p =null;
}return num;
}void printlist(linklist &l)
cout<<
"end"
<}int main()
貼上執行結果
length: 0400->300->100->500->200->end
length: 5
9999
400->300->100->500->200->end
length: 5
資料結構 c語言實現 雙鏈表
有頭結點雙鏈表 include include include define max 51 struct people typedef struct lnode lnode,linklist linklist為指向結構體lnode的指標型別,這裡linklist 與lnote 等價 void pri...
資料結構之單鏈表(C語言實現)
資料結構之單鏈表 c語言實現 本次介紹三種單鏈表 普通單鏈表 迴圈鍊錶和雙向鍊錶,後面的部落格會繼續介紹後兩種鍊錶 首先介紹單鏈表的特點 1.鍊錶是由乙個個記憶體位址不連續的節點組成 2.每個節點最多只有乙個前驅,乙個後記 第乙個節點只有後繼沒有前驅,最後乙個節點只有前驅沒有後繼 3.鍊錶不支援隨機...
資料結構 單鏈表c語言實現
list.h如下 ifndef list h define list h typedef struct node node,list void initlist list list bool insert head list list,int val bool insert tail list li...