鍊錶是一種物理儲存單元上非連續、非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序實現的。鍊錶由一系列節點組成,每個結點包括資料域和指標域。此處是帶頭結點的鍊錶。
typedef struct linklistll;
ll *headcreate_list(int n)
return p;
}
- 尾插法
c++
ll *create_list(int n)
return p;//p是頭節點
}```
ll *insert_list(ll *p,int place,int e)
s=(ll*)malloc(sizeof(ll));
s->data=e;
s->next=q->next;
q->next=s;
return p;
}
ll *delete_list(ll *p,int place)
e=q->next->data;
printf("被刪除的元素為:%d\n",e);
r=q->next;
q->next=q->next->next;
free(r);
return p;
}
int locate (ll *p,int e)
} return 0;
}
int length(ll *p)
} return n;
}
ll *nizhi(ll *head)
return head;
}
void print_list(ll *p)
printf("\n");
}
完整**實現:
#include#include#include#includetypedef struct linklistll;
ll *create_list(int n);//尾插法 建立鍊錶
ll *headcreate_list(int n);//頭插法 建立鍊錶
void print_list(ll *p);//列印鍊錶
ll *insert_list(ll *p,int place,int e);//把e插入place位置
ll *delete_list(ll *p,int place);//把place位置刪除
int locate(ll *p,int e);//尋找位置
int length(ll *p); //求長度
ll *nizhi(ll *p); //單鏈表的逆置
int main()
ll *create_list(int n)
return p;//p是頭節點
}void print_list(ll *p)
printf("\n");
}ll *insert_list(ll *p,int place,int e)
s=(ll*)malloc(sizeof(ll));
s->data=e;
s->next=q->next;
q->next=s;
return p;
}ll *delete_list(ll *p,int place)
e=q->next->data;
printf("被刪除的元素為:%d\n",e);
r=q->next;
q->next=q->next->next;
free(r);
return p;
}ll *headcreate_list(int n)
return p;
} int locate (ll *p,int e)
} return 0;
}int length(ll *p)
} return n;
}ll *nizhi(ll *head)
return head;
}
Linux資料結構 雙向鍊錶2(帶頭節點)
這一篇講講雙向鍊錶的其他操作 一.查詢乙個資料 dlinknode dlinklistfind dlinknode head,dlinktype to find return null 1.指標的合法性判斷 2.空鍊錶判斷 3.遍歷 二.指定位置之前插入乙個節點 void dlinklistinse...
資料結構 帶頭雙向迴圈鍊錶的實現
在實際工作中用雙向鍊錶又更多一點,因為雙向鍊錶比單鏈表效率更高,雙鏈表結構複雜,但是使用 實現以後會發現結構會帶來 很多優勢,實現反而簡單了 其實寫了單鏈表之後再看雙鏈表其實非常簡單,只不過就是多了乙個指標域而已,再沒有什麼特別難的地方.我們就直接上 吧 dlist.h pragma once in...
帶頭節點的鍊錶
include include includetypedef int type typedef struct node node 建立乙個頭節點並將其指標返回 node node init 列印乙個鍊錶 void node display node head else printf n 找到第n個節...