單鏈表的建立,插入,刪除以及就地逆轉

2021-06-08 16:40:08 字數 1361 閱讀 7813

週末,無聊,上個更無聊的程式。

自己寫的,水平不咋滴,湊合著看吧

/*

**題目:單鏈表的相關操作

**1.頭插法建立單鏈表;

**2.尾插法建立單鏈表;

**3.新增單鏈表結點;(頭插,尾插結點的核心部分和建立鍊錶一樣,所以,這裡假定鍊錶的元素從小到大有序,將新結點插入鍊錶)

**4.刪除單鏈表結點;

**5.單鏈表的就地逆轉;

**6.退出程式;

*/#include#includetypedef struct node

node,*linklist;

//頭結點的初始化

linklist initlist(linklist l)

return l;

}void headbuild(linklist l)

else

}}void tailbuild(linklist l)

else

}}void addnode(linklist l)

else

q = l->next;

t = l;

while((p->data>q->data)&&(null!=q->next)) //尋找合適插入結點的位置

if(null==q->next) //這裡寫的很怪異,可以簡寫的,但簡寫後有問題,ng的我mark掉了,後面再看問題出在**了。。。

else

/*

//ng method

while((p->data>q->data)&&(null!=q))

p->next = q;

t->next = p;

*/}void deletenode(linklist l)

if(p==null)

printf("鍊錶中無此結點,刪除失敗!");

else }

//獲取鍊錶長度

int getlistlen(linklist l)

return len;

}//鍊錶的逆置

void reverse(linklist l)

p = l->next;

//q = p;

l->next = null;

while(null!=p) }

//列印鍊錶

void printflist(linklist l)

printf("\n鍊錶列印:head");

while(p!=null) }

void showmenu()

int main()

showmenu();

}

return 0;

}

單鏈表的建立,插入,刪除,逆置

單鏈表的建立,插入,刪除,逆置 一 單鏈表 一種線性的基本資料型別,可以理解為一條長度可變的線條,中間有許多節點,節點相互之間用指標連線,連線方向從頭節點至尾節點使用指標單向連線,訪問也只能從頭節點開始訪問,尾節點的指標指向null。1 單鏈表的建立分為主函式,輸入函式,輸出函式三部分。我這裡是個例...

單鏈表的就地逆置

單鏈表的就地逆置是指輔助空間o 1 的逆置方法,有兩種方法 普通迴圈 頭插法重新建立帶頭節點的新鍊錶 和遞迴。下面我們詳細介紹這兩種方法 方法一 頭插法 演算法思想 逆置鍊錶初始為空,表中節點從原煉表中依次 刪除 再逐個插入逆置鍊錶的表頭 即 頭插 到逆置鍊錶中 使它成為逆置鍊錶的 新 的第乙個結點...

單鏈表的就地逆置

單鏈表的就地逆置 時限 1000ms記憶體限制 10000k 總時限 3000ms。描述讀入資料構造乙個單鏈表,實現單鏈表的就地逆置。輸入先輸入乙個小於100的正整數n,再從小到大的輸入n個正整數,建立乙個單鏈表,然後實現單鏈表的就地逆置。輸出按順序輸出逆置後的單鏈表的所有元素,每個元素佔一行。輸入...