2018年11月4日 星期日

[C語言 練習 3]串鍊連結 創建-刪除-插入-檢視

如果程式沒有練習,有些小細節很容易錯過...
就像一開始我的串列連結  完全沒注意到要在 外面設定一個head

結構link
data儲存 資料
*next 指標next指向 下個結構
struct link{
 int data;
 struct link *next;
};
void Creat_node(struct link *,int);  //創建結點 
void Insert_node(struct link *,int,int); // 插入結點 
void Delete_node(struct link *,int); //刪除結點 
void Look_list(struct link *); //列表列出各個結點 

創建



______________________________________

插入

這邊的
位置  指 第1個,第2個,第3個(依 某種順序而排列 的位置)
位址 指的是 那一塊結構的位址(如同門牌)




____________________________________________

刪除

____________________________________________
檢視.
檢視其實就是在指標只到下一個的時後順便把data印出來直到遇到NULL而已
所以就不放程式碼了(下方有 .c程式碼連結)
____________________________________________
稍微放下主程式的概念,有些程式碼沒放全,放全篇幅會拉太大

這邊的 head沒有指標,所以它的成員不能用->  ,
但是如果head的下一位 是用指標指的 那叫到它的成員就可以用
如: *(head.next).data or (head.next)->data 

int main(){
 int act=0,value,rank,i;
 struct link head;
 char temp[10];
 //head 初值設定 
 head.data=0;
 head.next=NULL;
 while (act!=4){
  act=0;
  //system("cls");
  printf("chose action type \ncreat_node[0],\ninsert_node[1],\ndelet_node[2],\nlook_node[3],\nleave[4]\n");
  scanf("%s",&temp);
  for(i=0;temp[i]!='\0';i++)   //預防有人很奇怪的給你輸入w或其他非數字 ,
   act=act*10+temp[i]-'0';  //下方rank 和 value都能用這種方法,只是我懶得用  
  if(act>=0&&act<5){
   if(act==0)
    //Creat_node(&head,value);
   else if(act==1)
    //Insert_node(&head,rank,value);
   else if(act==2)
    //Delete_node(&head,rank); 
   else if(act==3)
    //Look_list(&head);
   }
  }
 }
 system("pause");
 return 0;
}


____________________________________________
[C語言 練習 3]串鍊連結 程式碼
1.link test :練習 串列連結的建立 與 結構指標格式的使用
2.link test all in one  :練習 串列連結的建立.插入.刪除.顯示
https://drive.google.com/drive/folders/1O2pdvfT9T0vl4vogYf_EZcYNEmb1JR55?usp=sharing

沒有留言:

張貼留言

[C語言 練習 3]串鍊連結 創建-刪除-插入-檢視

如果程式沒有練習,有些小細節很容易錯過... 就像一開始我的串列連結  完全沒注意到要在 外面設定一個head 結構link data儲存 資料 *next 指標next指向 下個結構 struct link{ int data; struct link *nex...