週末,無聊,上個更無聊的程式。
自己寫的,水平不咋滴,湊合著看吧
/*
**題目:單鏈表的相關操作
**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個正整數,建立乙個單鏈表,然後實現單鏈表的就地逆置。輸出按順序輸出逆置後的單鏈表的所有元素,每個元素佔一行。輸入...