單鏈表初始化,頭插,尾插,查詢,刪除

2021-08-02 13:38:38 字數 1535 閱讀 5753

#include

using namespace std;

#include

//單鏈表的儲存結構

typedef struct node

node,*linklist;

//初始化單鏈表

void initlist()

l->next = null;//建立空的單鏈表

}//l是帶頭結點的空煉表頭指標,通過鍵盤輸入表中元素值,利用頭插法建單鏈表l

linklist linklistcreath()

return l;

}//l是帶頭結點的空煉表頭指標,通過鍵盤輸入表中元素值,利用尾插法建單鏈表l

linklist linklistcreatt()

}//在帶頭結點的單鏈表l中查詢第i個結點,若找到(1<=i<=n),則返回該結點的儲存位置,否則返回null

node *get(linklist l, int i)

node *p;

p = (node *)malloc(sizeof(node));

p = l;

while ((p->next != null)&&(j < i))

if (i = j)

else

return null;

}//在帶頭結點的單鏈表l中查詢其結點值等於key的第1個結點,若找到則返回該結點的儲存位置p,否則返回nul

node *locate(linklist l, int key)

else

}return p;

}//求帶頭結點的單鏈表l的長度

int listlength(linklist l)

return j;

}//在帶頭結點的單鏈表l中第i個位置之前插入值為e的新結點,n個元素有n+1個插入位置

int inslist(linklist l, int i, int e)

int j = 0;

p = l;

while ((p != null) && (j < i - 1))//p在i-1處,p的下乙個是i

if (!p)//找完還未找到第i個,i不在鍊錶範圍內,或大於鍊錶範圍

//插入資料

node *s;

s = (node *)malloc(sizeof(node));

s->data = e;

s->next = p->next;

p->next = s;

return 1;

}//在帶頭結點的單鏈表l中刪除第i個元素,並將刪除的元素儲存到變數*e中

int dellist(linklist l, int i,int *e)

if (!p->next)//表示pre->next=null,沒有找到合法的前驅位置,說明刪除位置i不合法

//刪除

node *r;

r = p->next;

p->next = r->next;

*e = r->data;

free(r);

return 1;

}

學習筆記 單鏈表的頭插 尾插

頭插法 1 頭結點指向賦值為空 2 將新節點插入到原頭節點之後,首節點之前 3頭節點重新指向插入的節點 應用例題 輸入乙個鍊錶,按鍊錶從尾到頭的順序返回乙個arraylist。思路 首先建立乙個輔助鍊錶,然後取原鍊錶中的元素,使用頭插法將其插入到新的輔助鍊錶中去,最後就能得到乙個從尾到頭的array...

單鏈表的初始化和建立(尾插法)

1 include2 include3 typedef struct node 4node,linklist 89 void initlist linklist l 1014 15 linklist creatlist int n 16 24 h data 0 25 h next null 26 l...

單鏈表的建立(頭插法尾插法),插入,刪除

include include include using namespace std typedef int elemtype typedef struct node node,linkedlist 把struct node 定義為新型別linklist,是乙個結構體的指標。void initli...