SlideShare a Scribd company logo
elease
R
 寫程式?那些老師沒教的事
    Code Smart, Don’t Code Hard

        2012/07/15	 @StudyArea-Taichung
      畢玉泉	 (小畢/CrBoy)	 	 <crboy@crboy.net>
在開始之前...

別怕!多問問題!

今天只做粗淺簡介,但很歡迎深入討論!

如果出現冷笑話...要笑!

自由進出上廁所講手機或睡覺

多問問題! 別怕!

萬一講太久可以發問「請問幾點下課?」XD
我是誰?
經歷

2007 年成大資工系程式設計競賽-優等
2007 年全國大專電腦軟體設計競賽甲組-佳作
2007 年 ACM ICPC 亞洲區台灣賽區-第 13 名
2008 年第三屆南區大專院校程式設計競賽-進階組第一名
2008 年成大資工系程式設計競賽進階組-第一名
協辦 Ubuntu-TW 社群全台相關活動 2007 - 迄今
2008 年間,於系內自行主講數場 C 語言基礎觀念教學課程
2008 年全國大專電腦軟體設計競賽甲組-第三名
主講「U很大,U不用錢 - Ubuntu Linux 介紹」於國立成功大學 (http://goo.gl/lEnCN) 2009/03/24
主講「MozTW & Ubuntu 自由新生代」於高雄應用科技大學 (http://goo.gl/CgtBK) 2009/07/13
主講「Ubuntu Linux 簡介」於台南四校資訊社團聯合迎新 2009/10/31
「自由軟體應用與教學」於雲林縣口湖國小 2010/01/21
2010 年台灣駭客年會 場務組工作人員
Ubuntu-TW 社群文件組(Doc Team)負責人 2010/10 - 迄今
2011 年台灣駭客年會 場務組工作人員
2011 年開源人年會 場務組工作人員
2011 年資安技能金盾獎-第三名
主講「那些老師沒教的事 - Code Smart, Don’t Code hard」於國立成功大學 2012/03/29
現在是打雜的
那...你是誰?
你為什麼在這?
今天我們以	 C	 語言為主
有空的話再來點	 PHP
我們以前都怎麼寫程式的?
??
那.....Debug呢?
測試訊息印太多?
程式還是怪怪的....?
你真的很努力.....(默)
我有時候很愛用 XDrz debug 法
printf("XD");
/* do many things */
printf("rzn");
 如果沒身體就是某個地方爆掉了XD


                    XD 
                       
                  也是一招
老師:「努力是會有回報的!
...........多寫一個功能加10分」
你又開始努力....
/*¶®•§jæ«∏Í∞T§uµ{æ«®t98Ø≈§AØZ≤¶•…¨u æ«∏π°GF74942294*/                           *      *            *         *         printf("h2°G");                  *      node *a, *b, *c;
                                                                                 *      *            *         *         print_list(h2);                  *      if(h==NULL || h->next==NULL) return h;
/                                                                                *      *            *         *         h = Merge(h1, h2);               *      a = h;
******************************************************************************   *      *            *         *         h1 = h2 = NULL;                  *      b = a->next;
*                                                                                *      *            *         *         break;                           *      c = b->next;
FileName: hw7_s.c                                                                *      *            *         case 7:                                    *      a->next = NULL;
Programmer: CrBoy                                                                *      *            *         *         if(order) Split(&h, &h1, &h2);   *      while(c!=NULL){
Purpose: ≥–≥y§@≠”singly linked list®√∞ı¶Ê¶U∫ÿ•Ø‡                                *      *            *         *         else{                            *      *            b->next = a;
Input:                                                                           *      *            *         *         *         h = Reverse(h);        *      *            a = b;
Output: the standard out                                                         *      *            *         *         *         Split(&h, &h1, &h2);   *      *            b = c;
Compilation: gcc hw7_s.c -o hw7_s                                                *      *            *         *         }                                *      *            c = c->next;
Run: ./hw7_s                                                                     *      *            *         *         printf("h1°G");                  *      }
Date: 2006/1/8                                                                   *      *            *         *         print_list(h1);                  *      b->next = a;
/                                                                                *      *            *         *         printf("h2°G");                  *      order = !order;
******************************************************************************   *      *            *         *         print_list(h2);                  *      return b;
/                                                                                *      *            *         *         break;                           }
                                                                                 *      *            *         default: printf("±z™∫øȧJ¶≥ª~°In");
#include <stdio.h>                                                               *      *            *         case 8: help();                            node *Merge(node *h1, node *h2){
                                                                                 *      *            }                                                    *       node *h, *temp;
struct node{                                                                     *      }                                                                 *       h = temp = h1->data < h2->data ? h1 : h2;
*       int data;                                                                *      return 0;                                                         *       h1->data < h2->data ? (h1=h1->next) : (h2=h2->next);
*       struct node *next;                                                       }                                                                        *       while(h1!=NULL && h2!=NULL){
};                                                                                                                                                        *      *            temp = temp->next = h1->data < h2->data ? h1 : h2;
                                                                                 void print_list(node *h){                                                *      *            h1->data < h2->data ? (h1=h1->next) : (h2=h2->next);
typedef struct node node;                                                        *       node *temp;                                                      *       }
                                                                                 *       temp = h;                                                        *       h2 == NULL ? (temp->next=h1) : (temp->next=h2);
void print_list(node*);/*print_list(h); ¶C¶L•Hh∂}¿Y™∫linked list*/               *       while(temp != NULL){                                             *       return h;
node *Insert(int, node*);/*Insert(data, h); ¶b•Hh∂}¿Y™∫linked list§§¥            *      *            printf("%d -> ", temp->data);                        }
°§Jdata®√¶^∂«∑s™∫h*/                                                             *      *            temp = temp->next;
node *Delete(int, node*);/*Delete(data, h); ¶b•Hh∂}¿Y™∫linked list§§ßR∞          *       }                                                                void Split(node **h, node **h1_ptr, node **h2_ptr){
£data®√¶^∂«∑s™∫h*/                                                               *       printf("NULLn");                                                *       node *h1=NULL, *h2=NULL;
node *Search(int, node*);/*Search(data, h); ¶b•Hh∂}¿Y™∫linked list§§¥Mß          }                                                                        *       while(*h!=NULL){
‰data®√∂«¶^data©“¶b™∫¶Ï∏m*/                                                                                                                               *      *            if((*h)->data%2){
int Count(node*);/*Count(h); ≠p∫‚•Hh∂}¿Y™∫linked list§§™∫∏`¬I≠”º∆*/              node *Insert(int data, node *h){                                         *      *            *         if(h1==NULL) h1 = *h1_ptr = *h;
node *Reverse(node*);/*Reverse(h); §œß«±∆¶C•Hh∂}¿Y™∫linked list®√∂«¶^∑s™∫h*/     *       node *p, *t, *temp;                                              *      *            *         else *h1_ptr = (*h1_ptr)->next = *h;
node *Merge(node*, node*);/*Merge(h1, h2); ¶X®÷h1ªPh2≥o2≠”linked                 *       if(h==NULL){                                                     *      *            }else{
list®√¶^∂«¶X®÷´·™∫™∫head*/                                                       *      *             temp = (node*)malloc(sizeof(node));                 *      *            *         if(h2==NULL) h2 = *h2_ptr = *h;
void Split(node**, node**, node**);/*Split(&h, &h1, &h2); §¿≥Œh≥o≠”linked        *      *             temp->data = data;                                  *      *            *         else *h2_ptr = (*h2_ptr)->next = *h;
list¨∞©_∞∏º∆®√§¿ßO¶s®Ïh1ªPh2§§*/                                                 *      *             temp->next = NULL;                                  *      *            }
void help();                                                                     *      *             return temp;                                        *      *            *h = (*h)->next;
                                                                                 *       }                                                                *       }
int order=1;                                                                     *       p = h;                                                           *       (*h1_ptr)->next = (*h2_ptr)->next = NULL;
                                                                                 *       t = h->next;                                                     *       *h1_ptr = h1;
int main(void){                                                                  *       if(data<p->data){                                                *       *h2_ptr = h2;
*       int sel=8, data=0;                                                       *      *             temp = (node*)malloc(sizeof(node));                 *       *h = NULL;
*       node *h=NULL, *h1=NULL, *h2=NULL;                                        *      *             temp->data = data;                                  }
*       help();                                                                  *      *             temp->next = p;
*       while(sel){                                                              *      *             return temp;                                        void help(){
*      *            printf("n•ÿ´e™∫Linked list°G");                             *       }                                                                *       printf("0.µ≤ßÙn");
*      *            print_list(h);                                               *       if(t!=NULL)                                                      *       printf("1.Insertn");
*      *            printf("Ω–øÔ拕؇°G");                                     *      *             while(data<p->data || data>t->data){                *       printf("2.Deleten");
*      *            if(scanf("%d", &sel)==0){                                    *      *            *          p = p->next;                              *       printf("3.Searchn");
*      *            *         sel=-1;                                            *      *            *          t = t->next;                              *       printf("4.Countn");
*      *            *         fflush(stdin);                                     *      *            *          if(t==NULL) break;                        *       printf("5.Reversen");
*      *            }                                                            *      *             }                                                   *       printf("6.Mergen");
*      *            switch(sel){                                                 *       temp = (node*)malloc(sizeof(node));                              *       printf("7.Splitn");
*      *            *         case 0: break;                                     *       temp->data = data;                                               *       printf("8.helpn");
*      *            *         case 1:                                            *       temp->next = p->next;                                            }
*      *            *         *         printf("Ω–øȧJ±˝¥°§J™∫愺∆≠»°G");        *       p->next = temp;
*      *            *         *         if(scanf("%d", &data)==0) continue;      *       return h;
*      *            *         *         if(order)                                }
*      *            *         *         *         h = Insert(data, h);
*      *            *         *         else{                                    node *Delete(int data, node *h){
*      *            *         *         *         h = Reverse(h);                *       node *p, *t;
*      *            *         *         *         h = Insert(data, h);           *       if(h==NULL) return h;
*      *            *         *         *         h = Reverse(h);                *       p = h;
*      *            *         *         }                                        *       t = h->next;
*      *            *         *         break;                                   *       if(data == p->data){
*      *            *         case 2:                                            *      *             p = p->next;
*      *            *         *         printf("Ω–øȧJ±˝ßR∞£™∫愺∆≠»°G");        *      *             free(h);
*      *            *         *         if(scanf("%d", &data)==0) continue;      *      *             return p;
*      *            *         *         if(order)                                *       }
*      *            *         *         *         h = Delete(data, h);           *       while(data!=t->data){
*      *            *         *         else{                                    *      *             p = p->next;
*      *            *         *         *         h = Reverse(h);                *      *             t = t->next;
*      *            *         *         *         h = Delete(data, h);           *      *             if(t==NULL) return h;
*      *            *         *         *         h = Reverse(h);                *       }
*      *            *         *         }                                        *       p->next = t->next;
*      *            *         *         break;                                   *       free(t);
*      *            *         case 3:                                            *       return h;
*      *            *         *         printf("Ω–øȧJ±˝∑j¥M™∫愺∆≠»°G");        }
*      *            *         *         if(scanf("%d", &data)==0) continue;
*      *            *         *         h1 = Search(data, h);                    node *Search(int data, node *h){
*      *            *         *         printf("•H%dß@¨∞∞_¬I™∫Linked list°G",    *       node *p=h;
data);                                                                           *       while(p!=NULL && data!=p->data)* p = p->next;
*      *            *         *         print_list(h1);                          *       return p;
*      *            *         *         h1 = NULL;                               }
*      *            *         *         break;
*      *            *         case 4:                                            int Count(node *h){
*      *            *         *         printf("•ÿ´e™∫Linked list¶@¶≥%d≠”node    *       int count=0;
°Cn", Count(h));                                                                *       while(h!=NULL){
*      *            *         *         break;                                   *      *             count += 1;
*      *            *         case 5:                                            *      *             h = h->next;
*      *            *         *         h = Reverse(h);                          *       }
*      *            *         *         break;                                   *       return count;
*      *            *         case 6:                                            }
*      *            *         *         printf("h1°G");
*      *            *         *         print_list(h1);                          node *Reverse(node *h){
/*¶®•§jæ«∏Í∞T§uµ{æ«®t98Ø≈§AØZ≤¶•…¨u æ«∏π°GF74942294*/                           *        *           *         *         printf("•H%dß@¨∞∞_¬I™∫Linked list°G",    *       return h;
                                                                                 data);                                                                            }
/                                                                                *        *            *         *         print_list(h1);
******************************************************************************   *        *            *         *         h1 = NULL;                              node *Search(int data, node *h){
*                                                                                *        *            *         *         break;                                  *       node *p=h;
FileName: hw7_s.c                                                                *        *            *         case 4:                                           *       while(p!=NULL && data!=p->data)* p = p->next;
Programmer: CrBoy                                                                *        *            *         *         printf("•ÿ´e™∫Linked list¶@¶≥%d≠”node   *       return p;
Purpose: ≥–≥y§@≠”singly linked list®√∞ı¶Ê¶U∫ÿ•Ø‡                                °Cn",   Count(h));                                                               }
Input:                                                                           *        *            *         *         break;
Output: the standard out                                                         *        *            *         case 5:                                           int Count(node *h){
Compilation: gcc hw7_s.c -o hw7_s                                                *        *            *         *         h = Reverse(h);                         *       int count=0;
Run: ./hw7_s                                                                     *        *            *         *         break;                                  *       while(h!=NULL){
Date: 2006/1/8                                                                   *        *            *         case 6:                                           *      *             count += 1;
/                                                                                *        *            *         *         printf("h1°G");                         *      *             h = h->next;
******************************************************************************   *        *            *         *         print_list(h1);                         *       }
/                                                                                *        *            *         *         printf("h2°G");                         *       return count;
                                                                                 *        *            *         *         print_list(h2);                         }
#include <stdio.h>                                                               *        *            *         *         h = Merge(h1, h2);
                                                                                 *        *            *         *         h1 = h2 = NULL;                         node *Reverse(node *h){
struct node{                                                                     *        *            *         *         break;                                  *       node *a, *b, *c;
*       int data;                                                                *        *            *         case 7:                                           *       if(h==NULL || h->next==NULL) return h;
*       struct node *next;                                                       *        *            *         *         if(order) Split(&h, &h1, &h2);          *       a = h;
};                                                                               *        *            *         *         else{                                   *       b = a->next;
                                                                                 *        *            *         *         *         h = Reverse(h);               *       c = b->next;
typedef struct node node;                                                        *        *            *         *         *         Split(&h, &h1, &h2);          *       a->next = NULL;




                                                                                                   新增!
                                                                                 *        *            *         *         }                                       *       while(c!=NULL){
void print_list(node*);/*print_list(h); ¶C¶L•Hh∂}¿Y™∫linked list*/               *        *            *         *         printf("h1°G");                         *      *             b->next = a;
node *Insert(int, node*);/*Insert(data, h); ¶b•Hh∂}¿Y™∫linked list§§¥            *        *            *         *         print_list(h1);                         *      *             a = b;
°§Jdata®√¶^∂«∑s™∫h*/                                                             *        *            *         *         printf("h2°G");                         *      *             b = c;
node *Delete(int, node*);/*Delete(data, h); ¶b•Hh∂}¿Y™∫linked list§§ßR∞          *        *            *         *         print_list(h2);                         *      *             c = c->next;
£data®√¶^∂«∑s™∫h*/                                                               *        *            *         *         break;                                  *       }
node *Search(int, node*);/*Search(data, h); ¶b•Hh∂}¿Y™∫linked list§§¥Mß          *        *            *         default: printf("±z™∫øȧJ¶≥ª~°In");              *       b->next = a;
‰data®√∂«¶^data©“¶b™∫¶Ï∏m*/                                                      *        *            *         case 8: help();                                   *       order = !order;




                              新增!
int Count(node*);/*Count(h); ≠p∫‚•Hh∂}¿Y™∫linked list§§™∫∏`¬I≠”º∆*/              *        *            }                                                           *       return b;
node *Reverse(node*);/*Reverse(h); §œß«±∆¶C•Hh∂}¿Y™∫linked list®√∂«¶^∑s™∫h*/     *         }                                                                       }
node *Merge(node*, node*);/*Merge(h1, h2); ¶X®÷h1ªPh2≥o2≠”linked                 !         temp = (node*)malloc(sizeof(node));
list®√¶^∂«¶X®÷´·™∫™∫head*/                                                       !         temp->data = data;                                                      node *Merge(node *h1, node *h2){
void Split(node**, node**, node**);/*Split(&h, &h1, &h2); §¿≥Œh≥o≠”linked        !         temp->next = p->next;                                                   *       node *h, *temp;
list¨∞©_∞∏º∆®√§¿ßO¶s®Ïh1ªPh2§§*/                                                 !         p->next = temp;                                                         *       h = temp = h1->data < h2->data ? h1 : h2;
void help();                                                                     *         return 0;                                                               *       h1->data < h2->data ? (h1=h1->next) : (h2=h2->next);
                                                                                 }                                                                                 *       while(h1!=NULL && h2!=NULL){
int order=1;                                                                                                                                                       *      *            temp = temp->next = h1->data < h2->data ? h1 : h2;
                                                                                 void print_list(node *h){                                                         *      *            h1->data < h2->data ? (h1=h1->next) : (h2=h2->next);
int main(void){                                                                  *       node *temp;                                                               *       }
!       node *h1=NULL, *h2=NULL;                                                 *       temp = h;                                                                 *       h2 == NULL ? (temp->next=h1) : (temp->next=h2);
!       while(*h!=NULL){                                                         *       while(temp != NULL){                                                      *       return h;
!      !            if((*h)->data%2){                                            *      *            printf("%d -> ", temp->data);                                 }
!      !            !         if(h1==NULL) h1 = *h1_ptr = *h;                    *      *            temp = temp->next;
!      !            !         else *h1_ptr = (*h1_ptr)->next = *h;               *       }                                                                         void Split(node **h, node **h1_ptr, node **h2_ptr){
!      !            }else{                                                       *       printf("NULLn");                                                         *       node *h1=NULL, *h2=NULL;
!      !            !         if(h2==NULL) h2 = *h2_ptr = *h;                    }                                                                                 *       while(*h!=NULL){
!      !            !         else *h2_ptr = (*h2_ptr)->next = *h;                                                                                                 *      *            if((*h)->data%2){
!      !            }                                                            node *Insert(int data, node *h){                                                  *      *            *         if(h1==NULL) h1 = *h1_ptr = *h;
!      !            *h = (*h)->next;                                             *       node *p, *t, *temp;                                                       *      *            *         else *h1_ptr = (*h1_ptr)->next = *h;
!       }                                                                        *       if(h==NULL){                                                              *      *            }else{
!       (*h1_ptr)->next = (*h2_ptr)->next = NULL;                                *      *             temp = (node*)malloc(sizeof(node));                          *      *            *         if(h2==NULL) h2 = *h2_ptr = *h;
!       *h1_ptr = h1;                                                            *      *             temp->data = data;                                           *      *            *         else *h2_ptr = (*h2_ptr)->next = *h;
!       *h2_ptr = h2;                                                            *      *             temp->next = NULL;                                           *      *            }
!       *h = NULL;                                                               *      *             return temp;                                                 *      *            *h = (*h)->next;
*       int sel=8, data=0;                                                       *       }                                                                         *       }
*       node *h=NULL, *h1=NULL, *h2=NULL;                                        *       p = h;                                                                    *       (*h1_ptr)->next = (*h2_ptr)->next = NULL;
*       help();                                                                  *       t = h->next;                                                              *       *h1_ptr = h1;
*       while(sel){                                                              *       if(data<p->data){                                                         *       *h2_ptr = h2;
*      *            printf("n•ÿ´e™∫Linked list°G");                             *      *             temp = (node*)malloc(sizeof(node));                          *       *h = NULL;
*      *            print_list(h);                                               *      *             temp->data = data;                                           }
*      *            printf("Ω–øÔ拕؇°G");                                     *      *             temp->next = p;
*      *            if(scanf("%d", &sel)==0){                                    *      *             return temp;                                                 void help(){
*      *            *         sel=-1;                                            *       }                                                                         *       printf("0.µ≤ßÙn");
*      *            *         fflush(stdin);                                     *       if(t!=NULL)                                                               *       printf("1.Insertn");
*      *            }                                                            *      *             while(data<p->data || data>t->data){                         *       printf("2.Deleten");
*      *            switch(sel){                                                 *      *            *          p = p->next;                                       *       printf("3.Searchn");
*      *            *         case 0: break;                                     *      *            *          t = t->next;                                       *       printf("4.Countn");
*      *            *         case 1:                                            *      *            *          if(t==NULL) break;                                 *       printf("5.Reversen");
*      *            *         *         printf("Ω–øȧJ±˝¥°§J™∫愺∆≠»°G");        *      *             }                                                            *       printf("6.Mergen");
*      *            *         *         if(scanf("%d", &data)==0) continue;      *       temp = (node*)malloc(sizeof(node));                                       *       printf("7.Splitn");
*      *            *         *         if(order)                                *       temp->data = data;                                                        *       printf("8.helpn");
*      *            *         *         *         h = Insert(data, h);           *       temp->next = p->next;                                                     }
*      *            *         *         else{                                    *       p->next = temp;
*      *            *         *         *         h = Reverse(h);                *       return h;
*      *            *         *         *         h = Insert(data, h);           }
*      *            *         *         *         h = Reverse(h);
*      *            *         *         }                                        node *Delete(int data, node *h){
*      *            *         *         break;                                   *       node *p, *t;
*      *            *         case 2:                                            *       if(h==NULL) return h;
*      *            *         *         printf("Ω–øȧJ±˝ßR∞£™∫愺∆≠»°G");        *       p = h;
*      *            *         *         if(scanf("%d", &data)==0) continue;      *       t = h->next;
*      *            *         *         if(order)                                *       if(data == p->data){
*      *            *         *         *         h = Delete(data, h);           *      *             p = p->next;
*      *            *         *         else{                                    *      *             free(h);
*      *            *         *         *         h = Reverse(h);                *      *             return p;
*      *            *         *         *         h = Delete(data, h);           *       }
*      *            *         *         *         h = Reverse(h);                *       while(data!=t->data){
*      *            *         *         }                                        *      *             p = p->next;
*      *            *         *         break;                                   *      *             t = t->next;
*      *            *         case 3:                                            *      *             if(t==NULL) return h;
*      *            *         *         printf("Ω–øȧJ±˝∑j¥M™∫愺∆≠»°G");        *       }
*      *            *         *         if(scanf("%d", &data)==0) continue;      *       p->next = t->next;
*      *            *         *         h1 = Search(data, h);                    *       free(t);
/*¶®•§jæ«∏Í∞T§uµ{æ«®t98Ø≈§AØZ≤¶•…¨u æ«∏π°GF74942294*/                           *        *           *         *         printf("•H%dß@¨∞∞_¬I™∫Linked list°G",    *       return h;
                                                                                 data);                                                                            }
/                                                                                *        *            *         *         print_list(h1);
******************************************************************************   *        *            *         *         h1 = NULL;                              node *Search(int data, node *h){
*                                                                                *        *            *         *         break;                                  *       node *p=h;
FileName: hw7_s.c                                                                *        *            *         case 4:                                           *       while(p!=NULL && data!=p->data)* p = p->next;
Programmer: CrBoy                                                                *        *            *         *         printf("•ÿ´e™∫Linked list¶@¶≥%d≠”node   *       return p;
Purpose: ≥–≥y§@≠”singly linked list®√∞ı¶Ê¶U∫ÿ•Ø‡                                °Cn",   Count(h));                                                               }
Input:                                                                           *        *            *         *         break;
Output: the standard out                                                         *        *            *         case 5:                                           int Count(node *h){
Compilation: gcc hw7_s.c -o hw7_s                                                *        *            *         *         h = Reverse(h);                         *       int count=0;
Run: ./hw7_s                                                                     *        *            *         *         break;                                  *       while(h!=NULL){
Date: 2006/1/8                                                                   *        *            *         case 6:                                           *      *             count += 1;
/                                                                                *        *            *         *         printf("h1°G");                         *      *             h = h->next;
******************************************************************************   *        *            *         *         print_list(h1);                         *       }




                                                                                                                                                                   刪除!
/                                                                                *        *            *         *         printf("h2°G");                         *       return count;
                                                                                 *        *            *         *         print_list(h2);                         }
#include <stdio.h>                                                               *        *            *         *         h = Merge(h1, h2);
                                                                                 *        *            *         *         h1 = h2 = NULL;                         node *Reverse(node *h){
struct node{                                                                     *        *            *         *         break;                                  *       node *a, *b, *c;
*       int data;                                                                *        *            *         case 7:                                           *       if(h==NULL || h->next==NULL) return h;
*       struct node *next;                                                       *        *            *         *         if(order) Split(&h, &h1, &h2);          *       a = h;
};                                                                               *        *            *         *         else{                                   *       b = a->next;
                                                                                 *        *            *         *         *         h = Reverse(h);               *       c = b->next;
typedef struct node node;                                                        *        *            *         *         *         Split(&h, &h1, &h2);          *       a->next = NULL;
                                                                                 *        *            *         *         }                                       !       while(c!=NULL){
void print_list(node*);/*print_list(h); ¶C¶L•Hh∂}¿Y™∫linked list*/               *        *            *         *         printf("h1°G");                         !      !             b->next = a;
node *Insert(int, node*);/*Insert(data, h); ¶b•Hh∂}¿Y™∫linked list§§¥            *        *            *         *         print_list(h1);                         !      !             a = b;
°§Jdata®√¶^∂«∑s™∫h*/                                                             *        *            *         *         printf("h2°G");                         !      !             b = c;
node *Delete(int, node*);/*Delete(data, h); ¶b•Hh∂}¿Y™∫linked list§§ßR∞          *        *            *         *         print_list(h2);                         !      !             c = c->next;
£data®√¶^∂«∑s™∫h*/                                                               *        *            *         *         break;                                  !       }
node *Search(int, node*);/*Search(data, h); ¶b•Hh∂}¿Y™∫linked list§§¥Mß          *        *            *         default: printf("±z™∫øȧJ¶≥ª~°In");              *       b->next = a;
‰data®√∂«¶^data©“¶b™∫¶Ï∏m*/                                                      *        *            *         case 8: help();                                   *       order = !order;
int Count(node*);/*Count(h); ≠p∫‚•Hh∂}¿Y™∫linked list§§™∫∏`¬I≠”º∆*/              *        *            }                                                           *       return b;
node *Reverse(node*);/*Reverse(h); §œß«±∆¶C•Hh∂}¿Y™∫linked list®√∂«¶^∑s™∫h*/     *         }                                                                       }
node *Merge(node*, node*);/*Merge(h1, h2); ¶X®÷h1ªPh2≥o2≠”linked                 !         temp = (node*)malloc(sizeof(node));
list®√¶^∂«¶X®÷´·™∫™∫head*/                                                       !         temp->data = data;                                                      node *Merge(node *h1, node *h2){
void Split(node**, node**, node**);/*Split(&h, &h1, &h2); §¿≥Œh≥o≠”linked        !         temp->next = p->next;                                                   *       node *h, *temp;
list¨∞©_∞∏º∆®√§¿ßO¶s®Ïh1ªPh2§§*/                                                 !         p->next = temp;                                                         *       h = temp = h1->data < h2->data ? h1 : h2;
void help();                                                                     *         return 0;                                                               *       h1->data < h2->data ? (h1=h1->next) : (h2=h2->next);
                                                                                 }                                                                                 *       while(h1!=NULL && h2!=NULL){
int order=1;                                                                                                                                                       *      *            temp = temp->next = h1->data < h2->data ? h1 : h2;
                                                                                 void print_list(node *h){                                                         *      *            h1->data < h2->data ? (h1=h1->next) : (h2=h2->next);
int main(void){                                                                  *       node *temp;                                                               *       }
!       node *h1=NULL, *h2=NULL;                                                 *       temp = h;                                                                 !       while(c!=NULL){
!       while(*h!=NULL){                                                         *       while(temp != NULL){                                                      !      !            b->next = a;
!      !            if((*h)->data%2){                                            *      *            printf("%d -> ", temp->data);                                 !      !            a = b;
!      !            !         if(h1==NULL) h1 = *h1_ptr = *h;                    *      *            temp = temp->next;                                            !      !            b = c;
!      !            !         else *h1_ptr = (*h1_ptr)->next = *h;               *       }                                                                         !      !            c = c->next;
!      !            }else{                                                       *       printf("NULLn");                                                         !       }
!      !            !         if(h2==NULL) h2 = *h2_ptr = *h;                    }                                                                                 *       h2 == NULL ? (temp->next=h1) : (temp->next=h2);
!      !            !         else *h2_ptr = (*h2_ptr)->next = *h;                                                                                                 *       return h;
!      !            }                                                            node *Insert(int data, node *h){                                                  }




                                                                                                                                                              新增!
!      !            *h = (*h)->next;                                             *       node *p, *t, *temp;
!       }                                                                        *       if(h==NULL){                                                              void Split(node **h, node **h1_ptr, node **h2_ptr){
!       (*h1_ptr)->next = (*h2_ptr)->next = NULL;                                *      *             temp = (node*)malloc(sizeof(node));                          *       node *h1=NULL, *h2=NULL;
!       *h1_ptr = h1;                                                            *      *             temp->data = data;                                           *       while(*h!=NULL){
!       *h2_ptr = h2;                                                            *      *             temp->next = NULL;                                           *      *            if((*h)->data%2){
!       *h = NULL;                                                               *      *             return temp;                                                 *      *            *         if(h1==NULL) h1 = *h1_ptr = *h;
*       int sel=8, data=0;                                                       *       }                                                                         *      *            *         else *h1_ptr = (*h1_ptr)->next = *h;
*       node *h=NULL, *h1=NULL, *h2=NULL;                                        *       p = h;                                                                    *      *            }else{
*       help();                                                                  *       t = h->next;                                                              *      *            *         if(h2==NULL) h2 = *h2_ptr = *h;
*       while(sel){                                                              *       if(data<p->data){                                                         *      *            *         else *h2_ptr = (*h2_ptr)->next = *h;
*      *            printf("n•ÿ´e™∫Linked list°G");                             *      *             temp = (node*)malloc(sizeof(node));                          *      *            }
*      *            print_list(h);                                               *      *             temp->data = data;                                           *      *            *h = (*h)->next;
*      *            printf("Ω–øÔ拕؇°G");                                     *      *             temp->next = p;                                              *       }
*      *            if(scanf("%d", &sel)==0){                                    *      *             return temp;                                                 *       (*h1_ptr)->next = (*h2_ptr)->next = NULL;
*      *            *         sel=-1;                                            *       }                                                                         *       *h1_ptr = h1;
*      *            *         fflush(stdin);                                     *       if(t!=NULL)                                                               *       *h2_ptr = h2;
*      *            }                                                            *      *             while(data<p->data || data>t->data){                         *       *h = NULL;
*      *            switch(sel){                                                 *      *            *          p = p->next;                                       }
*      *            *         case 0: break;                                     *      *            *          t = t->next;
*      *            *         case 1:                                            *      *            *          if(t==NULL) break;                                 void help(){
*      *            *         *         printf("Ω–øȧJ±˝¥°§J™∫愺∆≠»°G");        *      *             }                                                            *       printf("0.µ≤ßÙn");
*      *            *         *         if(scanf("%d", &data)==0) continue;      *       temp = (node*)malloc(sizeof(node));                                       *       printf("1.Insertn");
*      *            *         *         if(order)                                *       temp->data = data;                                                        *       printf("2.Deleten");
*      *            *         *         *         h = Insert(data, h);           *       temp->next = p->next;                                                     *       printf("3.Searchn");
*      *            *         *         else{                                    *       p->next = temp;                                                           *       printf("4.Countn");
*      *            *         *         *         h = Reverse(h);                *       return h;                                                                 *       printf("5.Reversen");
*      *            *         *         *         h = Insert(data, h);           }                                                                                 *       printf("6.Mergen");
*      *            *         *         *         h = Reverse(h);                                                                                                  *       printf("7.Splitn");
*      *            *         *         }                                        node *Delete(int data, node *h){                                                  *       printf("8.helpn");
*      *            *         *         break;                                   *       node *p, *t;                                                              }
*      *            *         case 2:                                            *       if(h==NULL) return h;
*      *            *         *         printf("Ω–øȧJ±˝ßR∞£™∫愺∆≠»°G");        *       p = h;
*      *            *         *         if(scanf("%d", &data)==0) continue;      *       t = h->next;
*      *            *         *         if(order)                                *       if(data == p->data){
*      *            *         *         *         h = Delete(data, h);           *      *             p = p->next;
*      *            *         *         else{                                    *      *             free(h);
*      *            *         *         *         h = Reverse(h);                *      *             return p;
*      *            *         *         *         h = Delete(data, h);           *       }
*      *            *         *         *         h = Reverse(h);                *       while(data!=t->data){
*      *            *         *         }                                        *      *             p = p->next;
*      *            *         *         break;                                   *      *             t = t->next;
*      *            *         case 3:                                            *      *             if(t==NULL) return h;
*      *            *         *         printf("Ω–øȧJ±˝∑j¥M™∫愺∆≠»°G");        *       }
*      *            *         *         if(scanf("%d", &data)==0) continue;      *       p->next = t->next;
*      *            *         *         h1 = Search(data, h);                    *       free(t);
/*¶®•§jæ«∏Í∞T§uµ{æ«®t98Ø≈§AØZ≤¶•…¨u æ«∏π°GF74942294*/                           *        *           *         *         printf("•H%dß@¨∞∞_¬I™∫Linked list°G",    *      *           p = p->next;
                                                                                 data);                                                                            *      *           t = t->next;
/                                                                                *        *            *         *         print_list(h1);                         *      *           if(t==NULL) return h;
******************************************************************************   *        *            *         *         h1 = NULL;                              *      }
*                                                                                *        *            *         *         break;                                  *      p->next = t->next;
FileName: hw7_s.c                                                                *        *            *         case 4:                                           *      free(t);
Programmer: CrBoy                                                                *        *            *         *         printf("•ÿ´e™∫Linked list¶@¶≥%d≠”node   *      return h;
Purpose: ≥–≥y§@≠”singly linked list®√∞ı¶Ê¶U∫ÿ•Ø‡                                °Cn",   Count(h));                                                               }
Input:                                                                           *        *            *         *         break;
Output: the standard out                                                         *        *            *         case 5:                                           node *Search(int data, node *h){




                                                                                                                     刪除!
Compilation: gcc hw7_s.c -o hw7_s                                                *        *            *         *         h = Reverse(h);                         !       node *p=h;
Run: ./hw7_s                                                                     *        *            *         *         break;                                  !       while(p!=NULL && data!=p->data)! p = p->next;
Date: 2006/1/8                                                                   *        *            *         case 6:                                           !       return p;
/                                                                                *        *            *         *         printf("h1°G");                         }
******************************************************************************   *        *            *         *         print_list(h1);
/                                                                                *        *            *         *         printf("h2°G");                         int Count(node *h){
                                                                                 *        *            *         *         print_list(h2);                         !       int count=0;
#include <stdio.h>                                                               *        *            *         *         h = Merge(h1, h2);                      !       while(h!=NULL){
                                                                                 *        *            *         *         h1 = h2 = NULL;                         !      !             count += 1;
struct node{                                                                     *        *            *         *         break;                                  !      !             h = h->next;
*       int data;                                                                *        *            *         case 7:                                           !       }
*       struct node *next;                                                       *        *            *         *         if(order) Split(&h, &h1, &h2);          !       return count;
};                                                                               *        *            *         *         else{                                   }
                                                                                 *        *            *         *         *         h = Reverse(h);
typedef struct node node;                                                        *        *            *         *         *         Split(&h, &h1, &h2);          node *Reverse(node *h){
                                                                                 *        *            *         *         }                                       *       node *a, *b, *c;
void print_list(node*);/*print_list(h); ¶C¶L•Hh∂}¿Y™∫linked list*/               *        *            *         *         printf("h1°G");                         *       if(h==NULL || h->next==NULL) return h;
node *Insert(int, node*);/*Insert(data, h); ¶b•Hh∂}¿Y™∫linked list§§¥            *        *            *         *         print_list(h1);                         *       a = h;
°§Jdata®√¶^∂«∑s™∫h*/                                                             *        *            *         *         printf("h2°G");                         *       b = a->next;
node *Delete(int, node*);/*Delete(data, h); ¶b•Hh∂}¿Y™∫linked list§§ßR∞          *        *            *         *         print_list(h2);                         *       c = b->next;
£data®√¶^∂«∑s™∫h*/                                                               *        *            *         *         break;                                  *       a->next = NULL;
node *Search(int, node*);/*Search(data, h); ¶b•Hh∂}¿Y™∫linked list§§¥Mß          *        *            *         default: printf("±z™∫øȧJ¶≥ª~°In");              !       while(c!=NULL){
‰data®√∂«¶^data©“¶b™∫¶Ï∏m*/                                                      *        *            *         case 8: help();                                   !      !             b->next = a;
int Count(node*);/*Count(h); ≠p∫‚•Hh∂}¿Y™∫linked list§§™∫∏`¬I≠”º∆*/              *        *            }                                                           !      !             a = b;
node *Reverse(node*);/*Reverse(h); §œß«±∆¶C•Hh∂}¿Y™∫linked list®√∂«¶^∑s™∫h*/     *         }                                                                       !      !             b = c;
node *Merge(node*, node*);/*Merge(h1, h2); ¶X®÷h1ªPh2≥o2≠”linked                 !         temp = (node*)malloc(sizeof(node));                                     !      !             c = c->next;
list®√¶^∂«¶X®÷´·™∫™∫head*/                                                       !         temp->data = data;                                                      !       }
void Split(node**, node**, node**);/*Split(&h, &h1, &h2); §¿≥Œh≥o≠”linked        !         temp->next = p->next;                                                   *       b->next = a;
list¨∞©_∞∏º∆®√§¿ßO¶s®Ïh1ªPh2§§*/                                                 !         p->next = temp;                                                         *       order = !order;
void help();                                                                     *         return 0;                                                               *       return b;
                                                                                 }                                                                                 }
int order=1;
                                                                                 void print_list(node *h){                                                         node *Merge(node *h1, node *h2){
int main(void){                                                                  *       node *temp;                                                               *       node *h, *temp;
!       node *h1=NULL, *h2=NULL;                                                 *       temp = h;                                                                 *       h = temp = h1->data < h2->data ? h1 : h2;
!       while(*h!=NULL){                                                         *       while(temp != NULL){                                                      *       h1->data < h2->data ? (h1=h1->next) : (h2=h2->next);
!      !            if((*h)->data%2){                                            *      *            printf("%d -> ", temp->data);                                 *       while(h1!=NULL && h2!=NULL){
!      !            !         if(h1==NULL) h1 = *h1_ptr = *h;                    *      *            temp = temp->next;                                            *      *            temp = temp->next = h1->data < h2->data ? h1 : h2;
!      !            !         else *h1_ptr = (*h1_ptr)->next = *h;               *       }                                                                         *      *            h1->data < h2->data ? (h1=h1->next) : (h2=h2->next);
!      !            }else{                                                       *       printf("NULLn");                                                         *       }
!      !            !         if(h2==NULL) h2 = *h2_ptr = *h;                    }                                                                                 !       while(c!=NULL){
!      !            !         else *h2_ptr = (*h2_ptr)->next = *h;                                                                                                 !      !            b->next = a;
!      !            }                                                            node *Insert(int data, node *h){                                                  !      !            a = b;
!      !            *h = (*h)->next;                                             *       node *p, *t, *temp;                                                       !      !            b = c;
!       }                                                                        *       if(h==NULL){                                                              !      !            c = c->next;
!       (*h1_ptr)->next = (*h2_ptr)->next = NULL;                                *      *             temp = (node*)malloc(sizeof(node));                          !       }
!       *h1_ptr = h1;                                                            *      *             temp->data = data;                                           *       h2 == NULL ? (temp->next=h1) : (temp->next=h2);
!       *h2_ptr = h2;                                                            *      *             temp->next = NULL;                                           *       return h;
!       *h = NULL;                                                               *      *             return temp;                                                 }




                      刪除!
*       int sel=8, data=0;                                                       *       }
*       node *h=NULL, *h1=NULL, *h2=NULL;                                        *       p = h;                                                                    void Split(node **h, node **h1_ptr, node **h2_ptr){
*       help();                                                                  !       (*h1_ptr)->next = (*h2_ptr)->next = NULL;                                 *       node *h1=NULL, *h2=NULL;
*       while(sel){                                                              !       *h1_ptr = h1;                                                             *       while(*h!=NULL){
*      *            printf("n•ÿ´e™∫Linked list°G");                             !       *h2_ptr = h2;                                                             *      *            if((*h)->data%2){
*      *            print_list(h);                                               !       *h = NULL;                                                                *      *            *         if(h1==NULL) h1 = *h1_ptr = *h;
*      *            printf("Ω–øÔ拕؇°G");                                     *       t = h->next;                                                              *      *            *         else *h1_ptr = (*h1_ptr)->next = *h;
*      *            if(scanf("%d", &sel)==0){                                    *       if(data<p->data){                                                         *      *            }else{
*      *            *         sel=-1;                                            *      *             temp = (node*)malloc(sizeof(node));                          *      *            *         if(h2==NULL) h2 = *h2_ptr = *h;




                                                                                                                                      新增!
*      *            *         fflush(stdin);                                     *      *             temp->data = data;                                           *      *            *         else *h2_ptr = (*h2_ptr)->next = *h;
*      *            }                                                            *      *             temp->next = p;                                              *      *            }
*      *            switch(sel){                                                 *      *             return temp;                                                 *      *            *h = (*h)->next;
*      *            *         case 0: break;                                     *       }                                                                         *       }
!      !            !         case 1:                                            *       if(t!=NULL)                                                               *       (*h1_ptr)->next = (*h2_ptr)->next = NULL;
!      !            !         !         printf("Ω–øȧJ±˝¥°§J™∫愺∆≠»°G");        *      *             while(data<p->data || data>t->data){                         *       *h1_ptr = h1;
!      !            !         !         if(scanf("%d", &data)==0) continue;      *      *            *          p = p->next;                                       *       *h2_ptr = h2;
!      !            !         !         if(order)                                *      *            *          t = t->next;                                       *       *h = NULL;
!      !            !         !         !         h = Insert(data, h);           *      *            *          if(t==NULL) break;                                 }
!      !            !         !         else{                                    *      *             }
!      !            !         !         !         h = Reverse(h);                *       temp = (node*)malloc(sizeof(node));                                       void help(){
!      !            !         !         !         h = Insert(data, h);           *       temp->data = data;                                                        *       printf("0.µ≤ßÙn");
!      !            !         !         !         h = Reverse(h);                *       temp->next = p->next;                                                     *       printf("1.Insertn");
!      !            !         !         }                                        *       p->next = temp;                                                           *       printf("2.Deleten");
!      !            !         !         break;                                   !       node *h=NULL, *h1=NULL, *h2=NULL;                                         *       printf("3.Searchn");
!      !            !         case 2:                                            !       help();                                                                   *       printf("4.Countn");
!      !            !         !         printf("Ω–øȧJ±˝ßR∞£™∫愺∆≠»°G");        *       return h;                                                                 *       printf("5.Reversen");
!      !            !         !         if(scanf("%d", &data)==0) continue;      }                                                                                 *       printf("6.Mergen");
!      !            !         !         if(order)                                                                                                                  *       printf("7.Splitn");
!      !            !         !         !         h = Delete(data, h);           node *Delete(int data, node *h){                                                  *       printf("8.helpn");
!      !            !         !         else{                                    *       node *p, *t;                                                              }
!      !            !         !         !         h = Reverse(h);                *       if(h==NULL) return h;
!      !            !         !         !         h = Delete(data, h);           *       p = h;
!      !            !         !         !         h = Reverse(h);                *       t = h->next;
!      !            !         !         }                                        *       if(data == p->data){
!      !            !         !         break;                                   *      *             p = p->next;
*      *            *         case 3:                                            *      *             free(h);
*      *            *         *         printf("Ω–øȧJ±˝∑j¥M™∫愺∆≠»°G");        *      *             return p;
*      *            *         *         if(scanf("%d", &data)==0) continue;      *       }
*      *            *         *         h1 = Search(data, h);                    *       while(data!=t->data){
/*¶®•§jæ«∏Í∞T§uµ{æ«®t98Ø≈§AØZ≤¶•…¨u æ«∏π°GF74942294*/                           *        *           *         *         printf("•H%dß@¨∞∞_¬I™∫Linked list°G",    *      *           p = p->next;
                                                                                 data);                                                                            *      *           t = t->next;
/                                                                                *        *            *         *         print_list(h1);                         *      *           if(t==NULL) return h;
******************************************************************************   *        *            *         *         h1 = NULL;                              *      }
*                                                                                *        *            *         *         break;                                  *      p->next = t->next;
FileName: hw7_s.c                                                                *        *            *         case 4:                                           *      free(t);
Programmer: CrBoy                                                                *        *            *         *         printf("•ÿ´e™∫Linked list¶@¶≥%d≠”node   *      return h;
Purpose: ≥–≥y§@≠”singly linked list®√∞ı¶Ê¶U∫ÿ•Ø‡                                °Cn",   Count(h));                                                               }
Input:                                                                           *        *            *         *         break;
Output: the standard out                                                         *        *            *         case 5:                                           node *Search(int data, node *h){
Compilation: gcc hw7_s.c -o hw7_s                                                *        *            *         *         h = Reverse(h);                         !       node *p=h;
Run: ./hw7_s                                                                     *        *            *         *         break;                                  !       while(p!=NULL && data!=p->data)! p = p->next;
Date: 2006/1/8                                                                   *        *            *         case 6:                                           !       return p;
/                                                                                *        *            *         *         printf("h1°G");                         }
******************************************************************************   *        *            *         *         print_list(h1);
/                                                                                *        *            *         *         printf("h2°G");                         int Count(node *h){
                                                                                 *        *            *         *         print_list(h2);                         !       int count=0;
#include <stdio.h>                                                               *        *            *         *         h = Merge(h1, h2);                      !       while(h!=NULL){
                                                                                 *        *            *         *         h1 = h2 = NULL;                         !      !             count += 1;
struct node{                                                                     *        *            *         *         break;                                  !      !             h = h->next;
*       int data;                                                                *        *            *         case 7:                                           !       }
*       struct node *next;                                                       *        *            *         *         if(order) Split(&h, &h1, &h2);          !       return count;
};                                                                               *        *            *         *         else{                                   }
                                                                                 *        *            *         *         *         h = Reverse(h);
typedef struct node node;                                                        *        *            *         *         *         Split(&h, &h1, &h2);          node *Reverse(node *h){
                                                                                 *        *            *         *         }                                       *       node *a, *b, *c;
void print_list(node*);/*print_list(h); ¶C¶L•Hh∂}¿Y™∫linked list*/               *        *            *         *         printf("h1°G");                         *       if(h==NULL || h->next==NULL) return h;
node *Insert(int, node*);/*Insert(data, h); ¶b•Hh∂}¿Y™∫linked list§§¥            *        *            *         *         print_list(h1);                         *       a = h;
°§Jdata®√¶^∂«∑s™∫h*/                                                             *        *            *         *         printf("h2°G");                         *       b = a->next;
node *Delete(int, node*);/*Delete(data, h); ¶b•Hh∂}¿Y™∫linked list§§ßR∞          *        *            *         *         print_list(h2);                         *       c = b->next;




                                                                                 刪除!
£data®√¶^∂«∑s™∫h*/                                                               *        *            *         *         break;                                  *       a->next = NULL;
node *Search(int, node*);/*Search(data, h); ¶b•Hh∂}¿Y™∫linked list§§¥Mß          *        *            *         default: printf("±z™∫øȧJ¶≥ª~°In");              !       while(c!=NULL){
‰data®√∂«¶^data©“¶b™∫¶Ï∏m*/                                                      *        *            *         case 8: help();                                   !      !             b->next = a;
int Count(node*);/*Count(h); ≠p∫‚•Hh∂}¿Y™∫linked list§§™∫∏`¬I≠”º∆*/              *        *            }                                                           !      !             a = b;
node *Reverse(node*);/*Reverse(h); §œß«±∆¶C•Hh∂}¿Y™∫linked list®√∂«¶^∑s™∫h*/     *         }                                                                       !      !             b = c;
node *Merge(node*, node*);/*Merge(h1, h2); ¶X®÷h1ªPh2≥o2≠”linked                 !         temp = (node*)malloc(sizeof(node));                                     !      !             c = c->next;
list®√¶^∂«¶X®÷´·™∫™∫head*/                                                       !         temp->data = data;                                                      !       }
void Split(node**, node**, node**);/*Split(&h, &h1, &h2); §¿≥Œh≥o≠”linked        !         temp->next = p->next;                                                   *       b->next = a;
list¨∞©_∞∏º∆®√§¿ßO¶s®Ïh1ªPh2§§*/                                                 !         p->next = temp;                                                         *       order = !order;
void help();                                                                     *         return 0;                                                               *       return b;
                                                                                 }                                                                                 }
int order=1;
                                                                                 void print_list(node *h){                                                         node *Merge(node *h1, node *h2){
int main(void){                                                                  *       node *temp;                                                               *       node *h, *temp;
!       node *h1=NULL, *h2=NULL;                                                 *       temp = h;                                                                 *       h = temp = h1->data < h2->data ? h1 : h2;
!       while(*h!=NULL){                                                         *       while(temp != NULL){                                                      *       h1->data < h2->data ? (h1=h1->next) : (h2=h2->next);
!      !            if((*h)->data%2){                                            *      *            printf("%d -> ", temp->data);                                 *       while(h1!=NULL && h2!=NULL){
!      !            !         if(h1==NULL) h1 = *h1_ptr = *h;                    *      *            temp = temp->next;                                            *      *            temp = temp->next = h1->data < h2->data ? h1 : h2;
!      !            !         else *h1_ptr = (*h1_ptr)->next = *h;               *       }                                                                         *      *            h1->data < h2->data ? (h1=h1->next) : (h2=h2->next);
!      !            }else{                                                       *       printf("NULLn");                                                         *       }
!      !            !         if(h2==NULL) h2 = *h2_ptr = *h;                    }                                                                                 !       while(c!=NULL){
!      !            !         else *h2_ptr = (*h2_ptr)->next = *h;                                                                                                 !      !            b->next = a;
!      !            }                                                            node *Insert(int data, node *h){                                                  !      !            a = b;
!      !            *h = (*h)->next;                                             *       node *p, *t, *temp;                                                       !      !            b = c;
!       }                                                                        *       if(h==NULL){                                                              !      !            c = c->next;
!       (*h1_ptr)->next = (*h2_ptr)->next = NULL;                                *      *             temp = (node*)malloc(sizeof(node));                          !       }
!       *h1_ptr = h1;                                                            *      *             temp->data = data;                                           *       h2 == NULL ? (temp->next=h1) : (temp->next=h2);
!       *h2_ptr = h2;                                                            *      *             temp->next = NULL;                                           *       return h;
!       *h = NULL;                                                               *      *             return temp;                                                 }
*       int sel=8, data=0;                                                       *       }
*       node *h=NULL, *h1=NULL, *h2=NULL;                                        *       p = h;                                                                    void Split(node **h, node **h1_ptr, node **h2_ptr){
*       help();                                                                  !       (*h1_ptr)->next = (*h2_ptr)->next = NULL;                                 *       node *h1=NULL, *h2=NULL;
*       while(sel){                                                              !       *h1_ptr = h1;                                                             *       while(*h!=NULL){
*      *            printf("n•ÿ´e™∫Linked list°G");                             !       *h2_ptr = h2;                                                             *      *            if((*h)->data%2){
*      *            print_list(h);                                               !       *h = NULL;                                                                *      *            *         if(h1==NULL) h1 = *h1_ptr = *h;
*      *            printf("Ω–øÔ拕؇°G");                                     *       t = h->next;                                                              *      *            *         else *h1_ptr = (*h1_ptr)->next = *h;
*      *            if(scanf("%d", &sel)==0){                                    *       if(data<p->data){                                                         *      *            }else{




                                                                                                                                                  新增!
*      *            *         sel=-1;                                            *      *             temp = (node*)malloc(sizeof(node));                          *      *            *         if(h2==NULL) h2 = *h2_ptr = *h;
*      *            *         fflush(stdin);                                     *      *             temp->data = data;                                           *      *            *         else *h2_ptr = (*h2_ptr)->next = *h;
*      *            }                                                            *      *             temp->next = p;                                              *      *            }
*      *            switch(sel){                                                 *      *             return temp;                                                 *      *            *h = (*h)->next;
*      *            *         case 0: break;                                     *       }                                                                         *       }
!      !            !         case 1:                                            *       if(t!=NULL)                                                               *       (*h1_ptr)->next = (*h2_ptr)->next = NULL;
!      !            !         !         printf("Ω–øȧJ±˝¥°§J™∫愺∆≠»°G");        *      *             while(data<p->data || data>t->data){                         *       *h1_ptr = h1;
!      !            !         !         if(scanf("%d", &data)==0) continue;      *      *            *          p = p->next;                                       *       *h2_ptr = h2;
!      !            !         !         if(order)                                *      *            *          t = t->next;                                       *       *h = NULL;
!      !            !         !         !         h = Insert(data, h);           *      *            *          if(t==NULL) break;                                 }
!      !            !         !         else{                                    *      *             }
!      !            !         !         !         h = Reverse(h);                *       temp = (node*)malloc(sizeof(node));                                       void print_list(node *h){
!      !            !         !         !         h = Insert(data, h);           *       temp->data = data;                                                        !       node *temp;
!      !            !         !         !         h = Reverse(h);                *       temp->next = p->next;                                                     !       temp = h;
!      !            !         !         }                                        *       p->next = temp;                                                           !       while(temp != NULL){
!      !            !         !         break;                                   !       node *h=NULL, *h1=NULL, *h2=NULL;                                         !      !            printf("%d -> ", temp->data);
!      !            !         case 2:                                            !       help();                                                                   !      !            temp = temp->next;
!      !            !         !         printf("Ω–øȧJ±˝ßR∞£™∫愺∆≠»°G");        *       return h;                                                                 !       }
!      !            !         !         if(scanf("%d", &data)==0) continue;      }                                                                                 !       printf("NULLn");
!      !            !         !         if(order)                                                                                                                  }
!      !            !         !         !         h = Delete(data, h);           node *Delete(int data, node *h){
!      !            !         !         else{                                    *       node *p, *t;                                                              void help(){
!      !            !         !         !         h = Reverse(h);                *       if(h==NULL) return h;                                                     *       printf("0.µ≤ßÙn");
!      !            !         !         !         h = Delete(data, h);           *       p = h;                                                                    *       printf("1.Insertn");
!      !            !         !         !         h = Reverse(h);                *       t = h->next;                                                              *       printf("2.Deleten");
!      !            !         !         }                                        *       if(data == p->data){                                                      *       printf("3.Searchn");
!      !            !         !         break;                                   *      *             p = p->next;                                                 *       printf("4.Countn");
*      *            *         case 3:                                            *      *             free(h);                                                     *       printf("5.Reversen");
*      *            *         *         printf("Ω–øȧJ±˝∑j¥M™∫愺∆≠»°G");        *      *             return p;                                                    *       printf("6.Mergen");
*      *            *         *         if(scanf("%d", &data)==0) continue;      *       }                                                                         *       printf("7.Splitn");
*      *            *         *         h1 = Search(data, h);                    *       while(data!=t->data){                                                     *       printf("8.helpn");
你花了兩天
結果功能寫爛了
又花兩天把code改回來
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事
寫程式?那些老師沒教的事

More Related Content

What's hot

Myraytracer
MyraytracerMyraytracer
Myraytracer
kedar nath
 
Assignment no39
Assignment no39Assignment no39
Assignment no39Jay Patel
 
c++ project on restaurant billing
c++ project on restaurant billing c++ project on restaurant billing
c++ project on restaurant billing
Swakriti Rathore
 
Numerical Methods with Computer Programming
Numerical Methods with Computer ProgrammingNumerical Methods with Computer Programming
Numerical Methods with Computer Programming
Utsav Patel
 
Railwaynew
RailwaynewRailwaynew
Railwaynew
Arsh Vishwakarma
 
program on string in java Lab file 2 (3-year)
program on string in java Lab file 2 (3-year)program on string in java Lab file 2 (3-year)
program on string in java Lab file 2 (3-year)
Ankit Gupta
 
Introduction to ATS plugins
Introduction to ATS pluginsIntroduction to ATS plugins
Introduction to ATS pluginsPSUdaemon
 
Event
EventEvent
Is HTML5 Ready? (workshop)
Is HTML5 Ready? (workshop)Is HTML5 Ready? (workshop)
Is HTML5 Ready? (workshop)Remy Sharp
 
C99.php
C99.phpC99.php
C99.php
veng33k
 
Hospital management
Hospital managementHospital management
Hospital management
Naman Maheshwari
 
Nouveau document texte
Nouveau document texteNouveau document texte
Nouveau document texteSai Ef
 
Yy
YyYy
Yyyygh
 
Basic C++ 11/14 for Python Programmers
Basic C++ 11/14 for Python ProgrammersBasic C++ 11/14 for Python Programmers
Basic C++ 11/14 for Python Programmers
Appier
 
Abusing text/template for data transformation
Abusing text/template for data transformationAbusing text/template for data transformation
Abusing text/template for data transformation
Arnaud Porterie
 
Tests unitaires pour PostgreSQL avec pgTap
Tests unitaires pour PostgreSQL avec pgTapTests unitaires pour PostgreSQL avec pgTap
Tests unitaires pour PostgreSQL avec pgTap
Rodolphe Quiédeville
 
Quiz using C++
Quiz using C++Quiz using C++
Quiz using C++
Sushil Mishra
 

What's hot (19)

Myraytracer
MyraytracerMyraytracer
Myraytracer
 
Ds 2 cycle
Ds 2 cycleDs 2 cycle
Ds 2 cycle
 
Assignment no39
Assignment no39Assignment no39
Assignment no39
 
c++ project on restaurant billing
c++ project on restaurant billing c++ project on restaurant billing
c++ project on restaurant billing
 
Numerical Methods with Computer Programming
Numerical Methods with Computer ProgrammingNumerical Methods with Computer Programming
Numerical Methods with Computer Programming
 
Railwaynew
RailwaynewRailwaynew
Railwaynew
 
program on string in java Lab file 2 (3-year)
program on string in java Lab file 2 (3-year)program on string in java Lab file 2 (3-year)
program on string in java Lab file 2 (3-year)
 
Introduction to ATS plugins
Introduction to ATS pluginsIntroduction to ATS plugins
Introduction to ATS plugins
 
Event
EventEvent
Event
 
Is HTML5 Ready? (workshop)
Is HTML5 Ready? (workshop)Is HTML5 Ready? (workshop)
Is HTML5 Ready? (workshop)
 
C99.php
C99.phpC99.php
C99.php
 
Hospital management
Hospital managementHospital management
Hospital management
 
Nouveau document texte
Nouveau document texteNouveau document texte
Nouveau document texte
 
Yy
YyYy
Yy
 
Basic C++ 11/14 for Python Programmers
Basic C++ 11/14 for Python ProgrammersBasic C++ 11/14 for Python Programmers
Basic C++ 11/14 for Python Programmers
 
Ss
SsSs
Ss
 
Abusing text/template for data transformation
Abusing text/template for data transformationAbusing text/template for data transformation
Abusing text/template for data transformation
 
Tests unitaires pour PostgreSQL avec pgTap
Tests unitaires pour PostgreSQL avec pgTapTests unitaires pour PostgreSQL avec pgTap
Tests unitaires pour PostgreSQL avec pgTap
 
Quiz using C++
Quiz using C++Quiz using C++
Quiz using C++
 

Similar to 寫程式?那些老師沒教的事

#include iostream #includestdlib.h using namespace std;str.pdf
#include iostream #includestdlib.h using namespace std;str.pdf#include iostream #includestdlib.h using namespace std;str.pdf
#include iostream #includestdlib.h using namespace std;str.pdf
lakshmijewellery
 
Lab Week 2 Game Programming.docx
Lab Week 2 Game Programming.docxLab Week 2 Game Programming.docx
Lab Week 2 Game Programming.docx
teyaj1
 
includestdio.h #includestdlib.h int enqueue(struct node ,.pdf
includestdio.h #includestdlib.h int enqueue(struct node ,.pdfincludestdio.h #includestdlib.h int enqueue(struct node ,.pdf
includestdio.h #includestdlib.h int enqueue(struct node ,.pdf
galagirishp
 
This code currently works... Run it and get a screen shot of its .docx
 This code currently works... Run it and get a screen shot of its .docx This code currently works... Run it and get a screen shot of its .docx
This code currently works... Run it and get a screen shot of its .docx
Komlin1
 
C++ Language -- Dynamic Memory -- There are 7 files in this project- a.pdf
C++ Language -- Dynamic Memory -- There are 7 files in this project- a.pdfC++ Language -- Dynamic Memory -- There are 7 files in this project- a.pdf
C++ Language -- Dynamic Memory -- There are 7 files in this project- a.pdf
aassecuritysystem
 
Data structures cs301 power point slides lecture 03
Data structures   cs301 power point slides lecture 03Data structures   cs301 power point slides lecture 03
Data structures cs301 power point slides lecture 03Nasir Mehmood
 
reverse the linked list (2-4-8-10) by- stack- iteration- recursion- U.docx
reverse the linked list (2-4-8-10) by- stack- iteration- recursion-  U.docxreverse the linked list (2-4-8-10) by- stack- iteration- recursion-  U.docx
reverse the linked list (2-4-8-10) by- stack- iteration- recursion- U.docx
acarolyn
 
C++ Program to Implement Doubly Linked List #includei.pdf
  C++ Program to Implement Doubly Linked List  #includei.pdf  C++ Program to Implement Doubly Linked List  #includei.pdf
C++ Program to Implement Doubly Linked List #includei.pdf
Lalkamal2
 
Introduction to CUDA C: NVIDIA : Notes
Introduction to CUDA C: NVIDIA : NotesIntroduction to CUDA C: NVIDIA : Notes
Introduction to CUDA C: NVIDIA : Notes
Subhajit Sahu
 
computer notes - Data Structures - 3
computer notes - Data Structures - 3computer notes - Data Structures - 3
computer notes - Data Structures - 3ecomputernotes
 
Doubly linklist
Doubly linklistDoubly linklist
Doubly linklist
ilsamaryum
 
filesHeap.h#ifndef HEAP_H#define HEAP_H#includ.docx
filesHeap.h#ifndef HEAP_H#define HEAP_H#includ.docxfilesHeap.h#ifndef HEAP_H#define HEAP_H#includ.docx
filesHeap.h#ifndef HEAP_H#define HEAP_H#includ.docx
ssuser454af01
 
C++ via C#
C++ via C#C++ via C#
C++ via C#
Egor Bogatov
 
Write a C program that reads the words the user types at the command.pdf
Write a C program that reads the words the user types at the command.pdfWrite a C program that reads the words the user types at the command.pdf
Write a C program that reads the words the user types at the command.pdf
SANDEEPARIHANT
 
In C++ I need help with this method that Im trying to write fillLi.pdf
In C++ I need help with this method that Im trying to write fillLi.pdfIn C++ I need help with this method that Im trying to write fillLi.pdf
In C++ I need help with this method that Im trying to write fillLi.pdf
fantoosh1
 
DoublyList-cpp- #include -DoublyList-h- using namespace std- void Doub.pdf
DoublyList-cpp- #include -DoublyList-h- using namespace std- void Doub.pdfDoublyList-cpp- #include -DoublyList-h- using namespace std- void Doub.pdf
DoublyList-cpp- #include -DoublyList-h- using namespace std- void Doub.pdf
aathiauto
 
Help to implement delete_node get_succ get_pred walk and.pdf
Help to implement delete_node get_succ get_pred walk and.pdfHelp to implement delete_node get_succ get_pred walk and.pdf
Help to implement delete_node get_succ get_pred walk and.pdf
contact32
 

Similar to 寫程式?那些老師沒教的事 (20)

Sbaw091006
Sbaw091006Sbaw091006
Sbaw091006
 
#include iostream #includestdlib.h using namespace std;str.pdf
#include iostream #includestdlib.h using namespace std;str.pdf#include iostream #includestdlib.h using namespace std;str.pdf
#include iostream #includestdlib.h using namespace std;str.pdf
 
C++ programs
C++ programsC++ programs
C++ programs
 
Lab Week 2 Game Programming.docx
Lab Week 2 Game Programming.docxLab Week 2 Game Programming.docx
Lab Week 2 Game Programming.docx
 
includestdio.h #includestdlib.h int enqueue(struct node ,.pdf
includestdio.h #includestdlib.h int enqueue(struct node ,.pdfincludestdio.h #includestdlib.h int enqueue(struct node ,.pdf
includestdio.h #includestdlib.h int enqueue(struct node ,.pdf
 
This code currently works... Run it and get a screen shot of its .docx
 This code currently works... Run it and get a screen shot of its .docx This code currently works... Run it and get a screen shot of its .docx
This code currently works... Run it and get a screen shot of its .docx
 
C++ Language -- Dynamic Memory -- There are 7 files in this project- a.pdf
C++ Language -- Dynamic Memory -- There are 7 files in this project- a.pdfC++ Language -- Dynamic Memory -- There are 7 files in this project- a.pdf
C++ Language -- Dynamic Memory -- There are 7 files in this project- a.pdf
 
Data structures cs301 power point slides lecture 03
Data structures   cs301 power point slides lecture 03Data structures   cs301 power point slides lecture 03
Data structures cs301 power point slides lecture 03
 
reverse the linked list (2-4-8-10) by- stack- iteration- recursion- U.docx
reverse the linked list (2-4-8-10) by- stack- iteration- recursion-  U.docxreverse the linked list (2-4-8-10) by- stack- iteration- recursion-  U.docx
reverse the linked list (2-4-8-10) by- stack- iteration- recursion- U.docx
 
C program
C programC program
C program
 
C++ Program to Implement Doubly Linked List #includei.pdf
  C++ Program to Implement Doubly Linked List  #includei.pdf  C++ Program to Implement Doubly Linked List  #includei.pdf
C++ Program to Implement Doubly Linked List #includei.pdf
 
Introduction to CUDA C: NVIDIA : Notes
Introduction to CUDA C: NVIDIA : NotesIntroduction to CUDA C: NVIDIA : Notes
Introduction to CUDA C: NVIDIA : Notes
 
computer notes - Data Structures - 3
computer notes - Data Structures - 3computer notes - Data Structures - 3
computer notes - Data Structures - 3
 
Doubly linklist
Doubly linklistDoubly linklist
Doubly linklist
 
filesHeap.h#ifndef HEAP_H#define HEAP_H#includ.docx
filesHeap.h#ifndef HEAP_H#define HEAP_H#includ.docxfilesHeap.h#ifndef HEAP_H#define HEAP_H#includ.docx
filesHeap.h#ifndef HEAP_H#define HEAP_H#includ.docx
 
C++ via C#
C++ via C#C++ via C#
C++ via C#
 
Write a C program that reads the words the user types at the command.pdf
Write a C program that reads the words the user types at the command.pdfWrite a C program that reads the words the user types at the command.pdf
Write a C program that reads the words the user types at the command.pdf
 
In C++ I need help with this method that Im trying to write fillLi.pdf
In C++ I need help with this method that Im trying to write fillLi.pdfIn C++ I need help with this method that Im trying to write fillLi.pdf
In C++ I need help with this method that Im trying to write fillLi.pdf
 
DoublyList-cpp- #include -DoublyList-h- using namespace std- void Doub.pdf
DoublyList-cpp- #include -DoublyList-h- using namespace std- void Doub.pdfDoublyList-cpp- #include -DoublyList-h- using namespace std- void Doub.pdf
DoublyList-cpp- #include -DoublyList-h- using namespace std- void Doub.pdf
 
Help to implement delete_node get_succ get_pred walk and.pdf
Help to implement delete_node get_succ get_pred walk and.pdfHelp to implement delete_node get_succ get_pred walk and.pdf
Help to implement delete_node get_succ get_pred walk and.pdf
 

More from 均民 戴

CKmates - AWS 三大 AI 解決方案:應用影像辨識、聊天機器人與語音轉換以及 Serverless 應用
CKmates - AWS 三大 AI 解決方案:應用影像辨識、聊天機器人與語音轉換以及 Serverless 應用CKmates - AWS 三大 AI 解決方案:應用影像辨識、聊天機器人與語音轉換以及 Serverless 應用
CKmates - AWS 三大 AI 解決方案:應用影像辨識、聊天機器人與語音轉換以及 Serverless 應用
均民 戴
 
CKmates - AWS 雲端運算 基礎服務介紹
CKmates - AWS 雲端運算 基礎服務介紹CKmates - AWS 雲端運算 基礎服務介紹
CKmates - AWS 雲端運算 基礎服務介紹
均民 戴
 
COSCUP 2016 Workshop: 用 Docker 架設班級 git-it 練習環境
COSCUP 2016 Workshop: 用 Docker 架設班級 git-it 練習環境COSCUP 2016 Workshop: 用 Docker 架設班級 git-it 練習環境
COSCUP 2016 Workshop: 用 Docker 架設班級 git-it 練習環境
均民 戴
 
在 DigitalOcean 架設 Gitlab
在 DigitalOcean 架設 Gitlab在 DigitalOcean 架設 Gitlab
在 DigitalOcean 架設 Gitlab
均民 戴
 
Bootstrap個人網站 20141117
Bootstrap個人網站 20141117Bootstrap個人網站 20141117
Bootstrap個人網站 20141117
均民 戴
 
Bootstrap個人網站 20141027
Bootstrap個人網站 20141027Bootstrap個人網站 20141027
Bootstrap個人網站 20141027
均民 戴
 
資訊創意課程 - Create A Personal Website 1
資訊創意課程 - Create A Personal Website 1資訊創意課程 - Create A Personal Website 1
資訊創意課程 - Create A Personal Website 1
均民 戴
 
MIS MySQL 入門
MIS MySQL 入門MIS MySQL 入門
MIS MySQL 入門
均民 戴
 
SITCON 2014 - Regular Expression Introduce
SITCON 2014 - Regular Expression IntroduceSITCON 2014 - Regular Expression Introduce
SITCON 2014 - Regular Expression Introduce
均民 戴
 
興大資訊社 CPE 訓練宣傳
興大資訊社 CPE 訓練宣傳興大資訊社 CPE 訓練宣傳
興大資訊社 CPE 訓練宣傳均民 戴
 
20130706閃電秀
20130706閃電秀20130706閃電秀
20130706閃電秀
均民 戴
 
Drupalize your data use entities
Drupalize your data use entitiesDrupalize your data use entities
Drupalize your data use entities
均民 戴
 
Drupal 7 Entity & Entity API
Drupal 7 Entity & Entity APIDrupal 7 Entity & Entity API
Drupal 7 Entity & Entity API
均民 戴
 
植基於個人本體論的新聞推薦系統
植基於個人本體論的新聞推薦系統植基於個人本體論的新聞推薦系統
植基於個人本體論的新聞推薦系統
均民 戴
 
JSON 和 Android 的火花
JSON 和 Android 的火花JSON 和 Android 的火花
JSON 和 Android 的火花
均民 戴
 

More from 均民 戴 (15)

CKmates - AWS 三大 AI 解決方案:應用影像辨識、聊天機器人與語音轉換以及 Serverless 應用
CKmates - AWS 三大 AI 解決方案:應用影像辨識、聊天機器人與語音轉換以及 Serverless 應用CKmates - AWS 三大 AI 解決方案:應用影像辨識、聊天機器人與語音轉換以及 Serverless 應用
CKmates - AWS 三大 AI 解決方案:應用影像辨識、聊天機器人與語音轉換以及 Serverless 應用
 
CKmates - AWS 雲端運算 基礎服務介紹
CKmates - AWS 雲端運算 基礎服務介紹CKmates - AWS 雲端運算 基礎服務介紹
CKmates - AWS 雲端運算 基礎服務介紹
 
COSCUP 2016 Workshop: 用 Docker 架設班級 git-it 練習環境
COSCUP 2016 Workshop: 用 Docker 架設班級 git-it 練習環境COSCUP 2016 Workshop: 用 Docker 架設班級 git-it 練習環境
COSCUP 2016 Workshop: 用 Docker 架設班級 git-it 練習環境
 
在 DigitalOcean 架設 Gitlab
在 DigitalOcean 架設 Gitlab在 DigitalOcean 架設 Gitlab
在 DigitalOcean 架設 Gitlab
 
Bootstrap個人網站 20141117
Bootstrap個人網站 20141117Bootstrap個人網站 20141117
Bootstrap個人網站 20141117
 
Bootstrap個人網站 20141027
Bootstrap個人網站 20141027Bootstrap個人網站 20141027
Bootstrap個人網站 20141027
 
資訊創意課程 - Create A Personal Website 1
資訊創意課程 - Create A Personal Website 1資訊創意課程 - Create A Personal Website 1
資訊創意課程 - Create A Personal Website 1
 
MIS MySQL 入門
MIS MySQL 入門MIS MySQL 入門
MIS MySQL 入門
 
SITCON 2014 - Regular Expression Introduce
SITCON 2014 - Regular Expression IntroduceSITCON 2014 - Regular Expression Introduce
SITCON 2014 - Regular Expression Introduce
 
興大資訊社 CPE 訓練宣傳
興大資訊社 CPE 訓練宣傳興大資訊社 CPE 訓練宣傳
興大資訊社 CPE 訓練宣傳
 
20130706閃電秀
20130706閃電秀20130706閃電秀
20130706閃電秀
 
Drupalize your data use entities
Drupalize your data use entitiesDrupalize your data use entities
Drupalize your data use entities
 
Drupal 7 Entity & Entity API
Drupal 7 Entity & Entity APIDrupal 7 Entity & Entity API
Drupal 7 Entity & Entity API
 
植基於個人本體論的新聞推薦系統
植基於個人本體論的新聞推薦系統植基於個人本體論的新聞推薦系統
植基於個人本體論的新聞推薦系統
 
JSON 和 Android 的火花
JSON 和 Android 的火花JSON 和 Android 的火花
JSON 和 Android 的火花
 

Recently uploaded

The Roman Empire A Historical Colossus.pdf
The Roman Empire A Historical Colossus.pdfThe Roman Empire A Historical Colossus.pdf
The Roman Empire A Historical Colossus.pdf
kaushalkr1407
 
CACJapan - GROUP Presentation 1- Wk 4.pdf
CACJapan - GROUP Presentation 1- Wk 4.pdfCACJapan - GROUP Presentation 1- Wk 4.pdf
CACJapan - GROUP Presentation 1- Wk 4.pdf
camakaiclarkmusic
 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
siemaillard
 
The geography of Taylor Swift - some ideas
The geography of Taylor Swift - some ideasThe geography of Taylor Swift - some ideas
The geography of Taylor Swift - some ideas
GeoBlogs
 
Acetabularia Information For Class 9 .docx
Acetabularia Information For Class 9  .docxAcetabularia Information For Class 9  .docx
Acetabularia Information For Class 9 .docx
vaibhavrinwa19
 
The basics of sentences session 5pptx.pptx
The basics of sentences session 5pptx.pptxThe basics of sentences session 5pptx.pptx
The basics of sentences session 5pptx.pptx
heathfieldcps1
 
Additional Benefits for Employee Website.pdf
Additional Benefits for Employee Website.pdfAdditional Benefits for Employee Website.pdf
Additional Benefits for Employee Website.pdf
joachimlavalley1
 
Chapter 3 - Islamic Banking Products and Services.pptx
Chapter 3 - Islamic Banking Products and Services.pptxChapter 3 - Islamic Banking Products and Services.pptx
Chapter 3 - Islamic Banking Products and Services.pptx
Mohd Adib Abd Muin, Senior Lecturer at Universiti Utara Malaysia
 
Phrasal Verbs.XXXXXXXXXXXXXXXXXXXXXXXXXX
Phrasal Verbs.XXXXXXXXXXXXXXXXXXXXXXXXXXPhrasal Verbs.XXXXXXXXXXXXXXXXXXXXXXXXXX
Phrasal Verbs.XXXXXXXXXXXXXXXXXXXXXXXXXX
MIRIAMSALINAS13
 
special B.ed 2nd year old paper_20240531.pdf
special B.ed 2nd year old paper_20240531.pdfspecial B.ed 2nd year old paper_20240531.pdf
special B.ed 2nd year old paper_20240531.pdf
Special education needs
 
BÀI TẬP BỔ TRỢ TIẾNG ANH GLOBAL SUCCESS LỚP 3 - CẢ NĂM (CÓ FILE NGHE VÀ ĐÁP Á...
BÀI TẬP BỔ TRỢ TIẾNG ANH GLOBAL SUCCESS LỚP 3 - CẢ NĂM (CÓ FILE NGHE VÀ ĐÁP Á...BÀI TẬP BỔ TRỢ TIẾNG ANH GLOBAL SUCCESS LỚP 3 - CẢ NĂM (CÓ FILE NGHE VÀ ĐÁP Á...
BÀI TẬP BỔ TRỢ TIẾNG ANH GLOBAL SUCCESS LỚP 3 - CẢ NĂM (CÓ FILE NGHE VÀ ĐÁP Á...
Nguyen Thanh Tu Collection
 
Francesca Gottschalk - How can education support child empowerment.pptx
Francesca Gottschalk - How can education support child empowerment.pptxFrancesca Gottschalk - How can education support child empowerment.pptx
Francesca Gottschalk - How can education support child empowerment.pptx
EduSkills OECD
 
Introduction to AI for Nonprofits with Tapp Network
Introduction to AI for Nonprofits with Tapp NetworkIntroduction to AI for Nonprofits with Tapp Network
Introduction to AI for Nonprofits with Tapp Network
TechSoup
 
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
MysoreMuleSoftMeetup
 
How libraries can support authors with open access requirements for UKRI fund...
How libraries can support authors with open access requirements for UKRI fund...How libraries can support authors with open access requirements for UKRI fund...
How libraries can support authors with open access requirements for UKRI fund...
Jisc
 
Thesis Statement for students diagnonsed withADHD.ppt
Thesis Statement for students diagnonsed withADHD.pptThesis Statement for students diagnonsed withADHD.ppt
Thesis Statement for students diagnonsed withADHD.ppt
EverAndrsGuerraGuerr
 
Operation Blue Star - Saka Neela Tara
Operation Blue Star   -  Saka Neela TaraOperation Blue Star   -  Saka Neela Tara
Operation Blue Star - Saka Neela Tara
Balvir Singh
 
1.4 modern child centered education - mahatma gandhi-2.pptx
1.4 modern child centered education - mahatma gandhi-2.pptx1.4 modern child centered education - mahatma gandhi-2.pptx
1.4 modern child centered education - mahatma gandhi-2.pptx
JosvitaDsouza2
 
Unit 8 - Information and Communication Technology (Paper I).pdf
Unit 8 - Information and Communication Technology (Paper I).pdfUnit 8 - Information and Communication Technology (Paper I).pdf
Unit 8 - Information and Communication Technology (Paper I).pdf
Thiyagu K
 
Sha'Carri Richardson Presentation 202345
Sha'Carri Richardson Presentation 202345Sha'Carri Richardson Presentation 202345
Sha'Carri Richardson Presentation 202345
beazzy04
 

Recently uploaded (20)

The Roman Empire A Historical Colossus.pdf
The Roman Empire A Historical Colossus.pdfThe Roman Empire A Historical Colossus.pdf
The Roman Empire A Historical Colossus.pdf
 
CACJapan - GROUP Presentation 1- Wk 4.pdf
CACJapan - GROUP Presentation 1- Wk 4.pdfCACJapan - GROUP Presentation 1- Wk 4.pdf
CACJapan - GROUP Presentation 1- Wk 4.pdf
 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 
The geography of Taylor Swift - some ideas
The geography of Taylor Swift - some ideasThe geography of Taylor Swift - some ideas
The geography of Taylor Swift - some ideas
 
Acetabularia Information For Class 9 .docx
Acetabularia Information For Class 9  .docxAcetabularia Information For Class 9  .docx
Acetabularia Information For Class 9 .docx
 
The basics of sentences session 5pptx.pptx
The basics of sentences session 5pptx.pptxThe basics of sentences session 5pptx.pptx
The basics of sentences session 5pptx.pptx
 
Additional Benefits for Employee Website.pdf
Additional Benefits for Employee Website.pdfAdditional Benefits for Employee Website.pdf
Additional Benefits for Employee Website.pdf
 
Chapter 3 - Islamic Banking Products and Services.pptx
Chapter 3 - Islamic Banking Products and Services.pptxChapter 3 - Islamic Banking Products and Services.pptx
Chapter 3 - Islamic Banking Products and Services.pptx
 
Phrasal Verbs.XXXXXXXXXXXXXXXXXXXXXXXXXX
Phrasal Verbs.XXXXXXXXXXXXXXXXXXXXXXXXXXPhrasal Verbs.XXXXXXXXXXXXXXXXXXXXXXXXXX
Phrasal Verbs.XXXXXXXXXXXXXXXXXXXXXXXXXX
 
special B.ed 2nd year old paper_20240531.pdf
special B.ed 2nd year old paper_20240531.pdfspecial B.ed 2nd year old paper_20240531.pdf
special B.ed 2nd year old paper_20240531.pdf
 
BÀI TẬP BỔ TRỢ TIẾNG ANH GLOBAL SUCCESS LỚP 3 - CẢ NĂM (CÓ FILE NGHE VÀ ĐÁP Á...
BÀI TẬP BỔ TRỢ TIẾNG ANH GLOBAL SUCCESS LỚP 3 - CẢ NĂM (CÓ FILE NGHE VÀ ĐÁP Á...BÀI TẬP BỔ TRỢ TIẾNG ANH GLOBAL SUCCESS LỚP 3 - CẢ NĂM (CÓ FILE NGHE VÀ ĐÁP Á...
BÀI TẬP BỔ TRỢ TIẾNG ANH GLOBAL SUCCESS LỚP 3 - CẢ NĂM (CÓ FILE NGHE VÀ ĐÁP Á...
 
Francesca Gottschalk - How can education support child empowerment.pptx
Francesca Gottschalk - How can education support child empowerment.pptxFrancesca Gottschalk - How can education support child empowerment.pptx
Francesca Gottschalk - How can education support child empowerment.pptx
 
Introduction to AI for Nonprofits with Tapp Network
Introduction to AI for Nonprofits with Tapp NetworkIntroduction to AI for Nonprofits with Tapp Network
Introduction to AI for Nonprofits with Tapp Network
 
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
 
How libraries can support authors with open access requirements for UKRI fund...
How libraries can support authors with open access requirements for UKRI fund...How libraries can support authors with open access requirements for UKRI fund...
How libraries can support authors with open access requirements for UKRI fund...
 
Thesis Statement for students diagnonsed withADHD.ppt
Thesis Statement for students diagnonsed withADHD.pptThesis Statement for students diagnonsed withADHD.ppt
Thesis Statement for students diagnonsed withADHD.ppt
 
Operation Blue Star - Saka Neela Tara
Operation Blue Star   -  Saka Neela TaraOperation Blue Star   -  Saka Neela Tara
Operation Blue Star - Saka Neela Tara
 
1.4 modern child centered education - mahatma gandhi-2.pptx
1.4 modern child centered education - mahatma gandhi-2.pptx1.4 modern child centered education - mahatma gandhi-2.pptx
1.4 modern child centered education - mahatma gandhi-2.pptx
 
Unit 8 - Information and Communication Technology (Paper I).pdf
Unit 8 - Information and Communication Technology (Paper I).pdfUnit 8 - Information and Communication Technology (Paper I).pdf
Unit 8 - Information and Communication Technology (Paper I).pdf
 
Sha'Carri Richardson Presentation 202345
Sha'Carri Richardson Presentation 202345Sha'Carri Richardson Presentation 202345
Sha'Carri Richardson Presentation 202345
 

寫程式?那些老師沒教的事

  • 1. elease R 寫程式?那些老師沒教的事 Code Smart, Don’t Code Hard 2012/07/15 @StudyArea-Taichung 畢玉泉 (小畢/CrBoy) <crboy@crboy.net>
  • 4. 經歷 2007 年成大資工系程式設計競賽-優等 2007 年全國大專電腦軟體設計競賽甲組-佳作 2007 年 ACM ICPC 亞洲區台灣賽區-第 13 名 2008 年第三屆南區大專院校程式設計競賽-進階組第一名 2008 年成大資工系程式設計競賽進階組-第一名 協辦 Ubuntu-TW 社群全台相關活動 2007 - 迄今 2008 年間,於系內自行主講數場 C 語言基礎觀念教學課程 2008 年全國大專電腦軟體設計競賽甲組-第三名 主講「U很大,U不用錢 - Ubuntu Linux 介紹」於國立成功大學 (http://goo.gl/lEnCN) 2009/03/24 主講「MozTW & Ubuntu 自由新生代」於高雄應用科技大學 (http://goo.gl/CgtBK) 2009/07/13 主講「Ubuntu Linux 簡介」於台南四校資訊社團聯合迎新 2009/10/31 「自由軟體應用與教學」於雲林縣口湖國小 2010/01/21 2010 年台灣駭客年會 場務組工作人員 Ubuntu-TW 社群文件組(Doc Team)負責人 2010/10 - 迄今 2011 年台灣駭客年會 場務組工作人員 2011 年開源人年會 場務組工作人員 2011 年資安技能金盾獎-第三名 主講「那些老師沒教的事 - Code Smart, Don’t Code hard」於國立成功大學 2012/03/29
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18. ??
  • 19.
  • 20.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 37.
  • 38.
  • 39.
  • 41. 我有時候很愛用 XDrz debug 法 printf("XD"); /* do many things */ printf("rzn"); 如果沒身體就是某個地方爆掉了XD XD    也是一招
  • 44. /*¶®•§jæ«∏Í∞T§uµ{æ«®t98Ø≈§AØZ≤¶•…¨u æ«∏π°GF74942294*/ * * * * printf("h2°G"); * node *a, *b, *c; * * * * print_list(h2); * if(h==NULL || h->next==NULL) return h; / * * * * h = Merge(h1, h2); * a = h; ****************************************************************************** * * * * h1 = h2 = NULL; * b = a->next; * * * * * break; * c = b->next; FileName: hw7_s.c * * * case 7: * a->next = NULL; Programmer: CrBoy * * * * if(order) Split(&h, &h1, &h2); * while(c!=NULL){ Purpose: ≥–≥y§@≠”singly linked list®√∞ı¶Ê¶U∫ÿ•Ø‡ * * * * else{ * * b->next = a; Input: * * * * * h = Reverse(h); * * a = b; Output: the standard out * * * * * Split(&h, &h1, &h2); * * b = c; Compilation: gcc hw7_s.c -o hw7_s * * * * } * * c = c->next; Run: ./hw7_s * * * * printf("h1°G"); * } Date: 2006/1/8 * * * * print_list(h1); * b->next = a; / * * * * printf("h2°G"); * order = !order; ****************************************************************************** * * * * print_list(h2); * return b; / * * * * break; } * * * default: printf("±z™∫øȧJ¶≥ª~°In"); #include <stdio.h> * * * case 8: help(); node *Merge(node *h1, node *h2){ * * } * node *h, *temp; struct node{ * } * h = temp = h1->data < h2->data ? h1 : h2; * int data; * return 0; * h1->data < h2->data ? (h1=h1->next) : (h2=h2->next); * struct node *next; } * while(h1!=NULL && h2!=NULL){ }; * * temp = temp->next = h1->data < h2->data ? h1 : h2; void print_list(node *h){ * * h1->data < h2->data ? (h1=h1->next) : (h2=h2->next); typedef struct node node; * node *temp; * } * temp = h; * h2 == NULL ? (temp->next=h1) : (temp->next=h2); void print_list(node*);/*print_list(h); ¶C¶L•Hh∂}¿Y™∫linked list*/ * while(temp != NULL){ * return h; node *Insert(int, node*);/*Insert(data, h); ¶b•Hh∂}¿Y™∫linked list§§¥ * * printf("%d -> ", temp->data); } °§Jdata®√¶^∂«∑s™∫h*/ * * temp = temp->next; node *Delete(int, node*);/*Delete(data, h); ¶b•Hh∂}¿Y™∫linked list§§ßR∞ * } void Split(node **h, node **h1_ptr, node **h2_ptr){ £data®√¶^∂«∑s™∫h*/ * printf("NULLn"); * node *h1=NULL, *h2=NULL; node *Search(int, node*);/*Search(data, h); ¶b•Hh∂}¿Y™∫linked list§§¥Mß } * while(*h!=NULL){ ‰data®√∂«¶^data©“¶b™∫¶Ï∏m*/ * * if((*h)->data%2){ int Count(node*);/*Count(h); ≠p∫‚•Hh∂}¿Y™∫linked list§§™∫∏`¬I≠”º∆*/ node *Insert(int data, node *h){ * * * if(h1==NULL) h1 = *h1_ptr = *h; node *Reverse(node*);/*Reverse(h); §œß«±∆¶C•Hh∂}¿Y™∫linked list®√∂«¶^∑s™∫h*/ * node *p, *t, *temp; * * * else *h1_ptr = (*h1_ptr)->next = *h; node *Merge(node*, node*);/*Merge(h1, h2); ¶X®÷h1ªPh2≥o2≠”linked * if(h==NULL){ * * }else{ list®√¶^∂«¶X®÷´·™∫™∫head*/ * * temp = (node*)malloc(sizeof(node)); * * * if(h2==NULL) h2 = *h2_ptr = *h; void Split(node**, node**, node**);/*Split(&h, &h1, &h2); §¿≥Œh≥o≠”linked * * temp->data = data; * * * else *h2_ptr = (*h2_ptr)->next = *h; list¨∞©_∞∏º∆®√§¿ßO¶s®Ïh1ªPh2§§*/ * * temp->next = NULL; * * } void help(); * * return temp; * * *h = (*h)->next; * } * } int order=1; * p = h; * (*h1_ptr)->next = (*h2_ptr)->next = NULL; * t = h->next; * *h1_ptr = h1; int main(void){ * if(data<p->data){ * *h2_ptr = h2; * int sel=8, data=0; * * temp = (node*)malloc(sizeof(node)); * *h = NULL; * node *h=NULL, *h1=NULL, *h2=NULL; * * temp->data = data; } * help(); * * temp->next = p; * while(sel){ * * return temp; void help(){ * * printf("n•ÿ´e™∫Linked list°G"); * } * printf("0.µ≤ßÙn"); * * print_list(h); * if(t!=NULL) * printf("1.Insertn"); * * printf("Ω–øÔ拕؇°G"); * * while(data<p->data || data>t->data){ * printf("2.Deleten"); * * if(scanf("%d", &sel)==0){ * * * p = p->next; * printf("3.Searchn"); * * * sel=-1; * * * t = t->next; * printf("4.Countn"); * * * fflush(stdin); * * * if(t==NULL) break; * printf("5.Reversen"); * * } * * } * printf("6.Mergen"); * * switch(sel){ * temp = (node*)malloc(sizeof(node)); * printf("7.Splitn"); * * * case 0: break; * temp->data = data; * printf("8.helpn"); * * * case 1: * temp->next = p->next; } * * * * printf("Ω–øȧJ±˝¥°§J™∫愺∆≠»°G"); * p->next = temp; * * * * if(scanf("%d", &data)==0) continue; * return h; * * * * if(order) } * * * * * h = Insert(data, h); * * * * else{ node *Delete(int data, node *h){ * * * * * h = Reverse(h); * node *p, *t; * * * * * h = Insert(data, h); * if(h==NULL) return h; * * * * * h = Reverse(h); * p = h; * * * * } * t = h->next; * * * * break; * if(data == p->data){ * * * case 2: * * p = p->next; * * * * printf("Ω–øȧJ±˝ßR∞£™∫愺∆≠»°G"); * * free(h); * * * * if(scanf("%d", &data)==0) continue; * * return p; * * * * if(order) * } * * * * * h = Delete(data, h); * while(data!=t->data){ * * * * else{ * * p = p->next; * * * * * h = Reverse(h); * * t = t->next; * * * * * h = Delete(data, h); * * if(t==NULL) return h; * * * * * h = Reverse(h); * } * * * * } * p->next = t->next; * * * * break; * free(t); * * * case 3: * return h; * * * * printf("Ω–øȧJ±˝∑j¥M™∫愺∆≠»°G"); } * * * * if(scanf("%d", &data)==0) continue; * * * * h1 = Search(data, h); node *Search(int data, node *h){ * * * * printf("•H%dß@¨∞∞_¬I™∫Linked list°G", * node *p=h; data); * while(p!=NULL && data!=p->data)* p = p->next; * * * * print_list(h1); * return p; * * * * h1 = NULL; } * * * * break; * * * case 4: int Count(node *h){ * * * * printf("•ÿ´e™∫Linked list¶@¶≥%d≠”node * int count=0; °Cn", Count(h)); * while(h!=NULL){ * * * * break; * * count += 1; * * * case 5: * * h = h->next; * * * * h = Reverse(h); * } * * * * break; * return count; * * * case 6: } * * * * printf("h1°G"); * * * * print_list(h1); node *Reverse(node *h){
  • 45. /*¶®•§jæ«∏Í∞T§uµ{æ«®t98Ø≈§AØZ≤¶•…¨u æ«∏π°GF74942294*/ * * * * printf("•H%dß@¨∞∞_¬I™∫Linked list°G", * return h; data); } / * * * * print_list(h1); ****************************************************************************** * * * * h1 = NULL; node *Search(int data, node *h){ * * * * * break; * node *p=h; FileName: hw7_s.c * * * case 4: * while(p!=NULL && data!=p->data)* p = p->next; Programmer: CrBoy * * * * printf("•ÿ´e™∫Linked list¶@¶≥%d≠”node * return p; Purpose: ≥–≥y§@≠”singly linked list®√∞ı¶Ê¶U∫ÿ•Ø‡ °Cn", Count(h)); } Input: * * * * break; Output: the standard out * * * case 5: int Count(node *h){ Compilation: gcc hw7_s.c -o hw7_s * * * * h = Reverse(h); * int count=0; Run: ./hw7_s * * * * break; * while(h!=NULL){ Date: 2006/1/8 * * * case 6: * * count += 1; / * * * * printf("h1°G"); * * h = h->next; ****************************************************************************** * * * * print_list(h1); * } / * * * * printf("h2°G"); * return count; * * * * print_list(h2); } #include <stdio.h> * * * * h = Merge(h1, h2); * * * * h1 = h2 = NULL; node *Reverse(node *h){ struct node{ * * * * break; * node *a, *b, *c; * int data; * * * case 7: * if(h==NULL || h->next==NULL) return h; * struct node *next; * * * * if(order) Split(&h, &h1, &h2); * a = h; }; * * * * else{ * b = a->next; * * * * * h = Reverse(h); * c = b->next; typedef struct node node; * * * * * Split(&h, &h1, &h2); * a->next = NULL; 新增! * * * * } * while(c!=NULL){ void print_list(node*);/*print_list(h); ¶C¶L•Hh∂}¿Y™∫linked list*/ * * * * printf("h1°G"); * * b->next = a; node *Insert(int, node*);/*Insert(data, h); ¶b•Hh∂}¿Y™∫linked list§§¥ * * * * print_list(h1); * * a = b; °§Jdata®√¶^∂«∑s™∫h*/ * * * * printf("h2°G"); * * b = c; node *Delete(int, node*);/*Delete(data, h); ¶b•Hh∂}¿Y™∫linked list§§ßR∞ * * * * print_list(h2); * * c = c->next; £data®√¶^∂«∑s™∫h*/ * * * * break; * } node *Search(int, node*);/*Search(data, h); ¶b•Hh∂}¿Y™∫linked list§§¥Mß * * * default: printf("±z™∫øȧJ¶≥ª~°In"); * b->next = a; ‰data®√∂«¶^data©“¶b™∫¶Ï∏m*/ * * * case 8: help(); * order = !order; 新增! int Count(node*);/*Count(h); ≠p∫‚•Hh∂}¿Y™∫linked list§§™∫∏`¬I≠”º∆*/ * * } * return b; node *Reverse(node*);/*Reverse(h); §œß«±∆¶C•Hh∂}¿Y™∫linked list®√∂«¶^∑s™∫h*/ * } } node *Merge(node*, node*);/*Merge(h1, h2); ¶X®÷h1ªPh2≥o2≠”linked ! temp = (node*)malloc(sizeof(node)); list®√¶^∂«¶X®÷´·™∫™∫head*/ ! temp->data = data; node *Merge(node *h1, node *h2){ void Split(node**, node**, node**);/*Split(&h, &h1, &h2); §¿≥Œh≥o≠”linked ! temp->next = p->next; * node *h, *temp; list¨∞©_∞∏º∆®√§¿ßO¶s®Ïh1ªPh2§§*/ ! p->next = temp; * h = temp = h1->data < h2->data ? h1 : h2; void help(); * return 0; * h1->data < h2->data ? (h1=h1->next) : (h2=h2->next); } * while(h1!=NULL && h2!=NULL){ int order=1; * * temp = temp->next = h1->data < h2->data ? h1 : h2; void print_list(node *h){ * * h1->data < h2->data ? (h1=h1->next) : (h2=h2->next); int main(void){ * node *temp; * } ! node *h1=NULL, *h2=NULL; * temp = h; * h2 == NULL ? (temp->next=h1) : (temp->next=h2); ! while(*h!=NULL){ * while(temp != NULL){ * return h; ! ! if((*h)->data%2){ * * printf("%d -> ", temp->data); } ! ! ! if(h1==NULL) h1 = *h1_ptr = *h; * * temp = temp->next; ! ! ! else *h1_ptr = (*h1_ptr)->next = *h; * } void Split(node **h, node **h1_ptr, node **h2_ptr){ ! ! }else{ * printf("NULLn"); * node *h1=NULL, *h2=NULL; ! ! ! if(h2==NULL) h2 = *h2_ptr = *h; } * while(*h!=NULL){ ! ! ! else *h2_ptr = (*h2_ptr)->next = *h; * * if((*h)->data%2){ ! ! } node *Insert(int data, node *h){ * * * if(h1==NULL) h1 = *h1_ptr = *h; ! ! *h = (*h)->next; * node *p, *t, *temp; * * * else *h1_ptr = (*h1_ptr)->next = *h; ! } * if(h==NULL){ * * }else{ ! (*h1_ptr)->next = (*h2_ptr)->next = NULL; * * temp = (node*)malloc(sizeof(node)); * * * if(h2==NULL) h2 = *h2_ptr = *h; ! *h1_ptr = h1; * * temp->data = data; * * * else *h2_ptr = (*h2_ptr)->next = *h; ! *h2_ptr = h2; * * temp->next = NULL; * * } ! *h = NULL; * * return temp; * * *h = (*h)->next; * int sel=8, data=0; * } * } * node *h=NULL, *h1=NULL, *h2=NULL; * p = h; * (*h1_ptr)->next = (*h2_ptr)->next = NULL; * help(); * t = h->next; * *h1_ptr = h1; * while(sel){ * if(data<p->data){ * *h2_ptr = h2; * * printf("n•ÿ´e™∫Linked list°G"); * * temp = (node*)malloc(sizeof(node)); * *h = NULL; * * print_list(h); * * temp->data = data; } * * printf("Ω–øÔ拕؇°G"); * * temp->next = p; * * if(scanf("%d", &sel)==0){ * * return temp; void help(){ * * * sel=-1; * } * printf("0.µ≤ßÙn"); * * * fflush(stdin); * if(t!=NULL) * printf("1.Insertn"); * * } * * while(data<p->data || data>t->data){ * printf("2.Deleten"); * * switch(sel){ * * * p = p->next; * printf("3.Searchn"); * * * case 0: break; * * * t = t->next; * printf("4.Countn"); * * * case 1: * * * if(t==NULL) break; * printf("5.Reversen"); * * * * printf("Ω–øȧJ±˝¥°§J™∫愺∆≠»°G"); * * } * printf("6.Mergen"); * * * * if(scanf("%d", &data)==0) continue; * temp = (node*)malloc(sizeof(node)); * printf("7.Splitn"); * * * * if(order) * temp->data = data; * printf("8.helpn"); * * * * * h = Insert(data, h); * temp->next = p->next; } * * * * else{ * p->next = temp; * * * * * h = Reverse(h); * return h; * * * * * h = Insert(data, h); } * * * * * h = Reverse(h); * * * * } node *Delete(int data, node *h){ * * * * break; * node *p, *t; * * * case 2: * if(h==NULL) return h; * * * * printf("Ω–øȧJ±˝ßR∞£™∫愺∆≠»°G"); * p = h; * * * * if(scanf("%d", &data)==0) continue; * t = h->next; * * * * if(order) * if(data == p->data){ * * * * * h = Delete(data, h); * * p = p->next; * * * * else{ * * free(h); * * * * * h = Reverse(h); * * return p; * * * * * h = Delete(data, h); * } * * * * * h = Reverse(h); * while(data!=t->data){ * * * * } * * p = p->next; * * * * break; * * t = t->next; * * * case 3: * * if(t==NULL) return h; * * * * printf("Ω–øȧJ±˝∑j¥M™∫愺∆≠»°G"); * } * * * * if(scanf("%d", &data)==0) continue; * p->next = t->next; * * * * h1 = Search(data, h); * free(t);
  • 46. /*¶®•§jæ«∏Í∞T§uµ{æ«®t98Ø≈§AØZ≤¶•…¨u æ«∏π°GF74942294*/ * * * * printf("•H%dß@¨∞∞_¬I™∫Linked list°G", * return h; data); } / * * * * print_list(h1); ****************************************************************************** * * * * h1 = NULL; node *Search(int data, node *h){ * * * * * break; * node *p=h; FileName: hw7_s.c * * * case 4: * while(p!=NULL && data!=p->data)* p = p->next; Programmer: CrBoy * * * * printf("•ÿ´e™∫Linked list¶@¶≥%d≠”node * return p; Purpose: ≥–≥y§@≠”singly linked list®√∞ı¶Ê¶U∫ÿ•Ø‡ °Cn", Count(h)); } Input: * * * * break; Output: the standard out * * * case 5: int Count(node *h){ Compilation: gcc hw7_s.c -o hw7_s * * * * h = Reverse(h); * int count=0; Run: ./hw7_s * * * * break; * while(h!=NULL){ Date: 2006/1/8 * * * case 6: * * count += 1; / * * * * printf("h1°G"); * * h = h->next; ****************************************************************************** * * * * print_list(h1); * } 刪除! / * * * * printf("h2°G"); * return count; * * * * print_list(h2); } #include <stdio.h> * * * * h = Merge(h1, h2); * * * * h1 = h2 = NULL; node *Reverse(node *h){ struct node{ * * * * break; * node *a, *b, *c; * int data; * * * case 7: * if(h==NULL || h->next==NULL) return h; * struct node *next; * * * * if(order) Split(&h, &h1, &h2); * a = h; }; * * * * else{ * b = a->next; * * * * * h = Reverse(h); * c = b->next; typedef struct node node; * * * * * Split(&h, &h1, &h2); * a->next = NULL; * * * * } ! while(c!=NULL){ void print_list(node*);/*print_list(h); ¶C¶L•Hh∂}¿Y™∫linked list*/ * * * * printf("h1°G"); ! ! b->next = a; node *Insert(int, node*);/*Insert(data, h); ¶b•Hh∂}¿Y™∫linked list§§¥ * * * * print_list(h1); ! ! a = b; °§Jdata®√¶^∂«∑s™∫h*/ * * * * printf("h2°G"); ! ! b = c; node *Delete(int, node*);/*Delete(data, h); ¶b•Hh∂}¿Y™∫linked list§§ßR∞ * * * * print_list(h2); ! ! c = c->next; £data®√¶^∂«∑s™∫h*/ * * * * break; ! } node *Search(int, node*);/*Search(data, h); ¶b•Hh∂}¿Y™∫linked list§§¥Mß * * * default: printf("±z™∫øȧJ¶≥ª~°In"); * b->next = a; ‰data®√∂«¶^data©“¶b™∫¶Ï∏m*/ * * * case 8: help(); * order = !order; int Count(node*);/*Count(h); ≠p∫‚•Hh∂}¿Y™∫linked list§§™∫∏`¬I≠”º∆*/ * * } * return b; node *Reverse(node*);/*Reverse(h); §œß«±∆¶C•Hh∂}¿Y™∫linked list®√∂«¶^∑s™∫h*/ * } } node *Merge(node*, node*);/*Merge(h1, h2); ¶X®÷h1ªPh2≥o2≠”linked ! temp = (node*)malloc(sizeof(node)); list®√¶^∂«¶X®÷´·™∫™∫head*/ ! temp->data = data; node *Merge(node *h1, node *h2){ void Split(node**, node**, node**);/*Split(&h, &h1, &h2); §¿≥Œh≥o≠”linked ! temp->next = p->next; * node *h, *temp; list¨∞©_∞∏º∆®√§¿ßO¶s®Ïh1ªPh2§§*/ ! p->next = temp; * h = temp = h1->data < h2->data ? h1 : h2; void help(); * return 0; * h1->data < h2->data ? (h1=h1->next) : (h2=h2->next); } * while(h1!=NULL && h2!=NULL){ int order=1; * * temp = temp->next = h1->data < h2->data ? h1 : h2; void print_list(node *h){ * * h1->data < h2->data ? (h1=h1->next) : (h2=h2->next); int main(void){ * node *temp; * } ! node *h1=NULL, *h2=NULL; * temp = h; ! while(c!=NULL){ ! while(*h!=NULL){ * while(temp != NULL){ ! ! b->next = a; ! ! if((*h)->data%2){ * * printf("%d -> ", temp->data); ! ! a = b; ! ! ! if(h1==NULL) h1 = *h1_ptr = *h; * * temp = temp->next; ! ! b = c; ! ! ! else *h1_ptr = (*h1_ptr)->next = *h; * } ! ! c = c->next; ! ! }else{ * printf("NULLn"); ! } ! ! ! if(h2==NULL) h2 = *h2_ptr = *h; } * h2 == NULL ? (temp->next=h1) : (temp->next=h2); ! ! ! else *h2_ptr = (*h2_ptr)->next = *h; * return h; ! ! } node *Insert(int data, node *h){ } 新增! ! ! *h = (*h)->next; * node *p, *t, *temp; ! } * if(h==NULL){ void Split(node **h, node **h1_ptr, node **h2_ptr){ ! (*h1_ptr)->next = (*h2_ptr)->next = NULL; * * temp = (node*)malloc(sizeof(node)); * node *h1=NULL, *h2=NULL; ! *h1_ptr = h1; * * temp->data = data; * while(*h!=NULL){ ! *h2_ptr = h2; * * temp->next = NULL; * * if((*h)->data%2){ ! *h = NULL; * * return temp; * * * if(h1==NULL) h1 = *h1_ptr = *h; * int sel=8, data=0; * } * * * else *h1_ptr = (*h1_ptr)->next = *h; * node *h=NULL, *h1=NULL, *h2=NULL; * p = h; * * }else{ * help(); * t = h->next; * * * if(h2==NULL) h2 = *h2_ptr = *h; * while(sel){ * if(data<p->data){ * * * else *h2_ptr = (*h2_ptr)->next = *h; * * printf("n•ÿ´e™∫Linked list°G"); * * temp = (node*)malloc(sizeof(node)); * * } * * print_list(h); * * temp->data = data; * * *h = (*h)->next; * * printf("Ω–øÔ拕؇°G"); * * temp->next = p; * } * * if(scanf("%d", &sel)==0){ * * return temp; * (*h1_ptr)->next = (*h2_ptr)->next = NULL; * * * sel=-1; * } * *h1_ptr = h1; * * * fflush(stdin); * if(t!=NULL) * *h2_ptr = h2; * * } * * while(data<p->data || data>t->data){ * *h = NULL; * * switch(sel){ * * * p = p->next; } * * * case 0: break; * * * t = t->next; * * * case 1: * * * if(t==NULL) break; void help(){ * * * * printf("Ω–øȧJ±˝¥°§J™∫愺∆≠»°G"); * * } * printf("0.µ≤ßÙn"); * * * * if(scanf("%d", &data)==0) continue; * temp = (node*)malloc(sizeof(node)); * printf("1.Insertn"); * * * * if(order) * temp->data = data; * printf("2.Deleten"); * * * * * h = Insert(data, h); * temp->next = p->next; * printf("3.Searchn"); * * * * else{ * p->next = temp; * printf("4.Countn"); * * * * * h = Reverse(h); * return h; * printf("5.Reversen"); * * * * * h = Insert(data, h); } * printf("6.Mergen"); * * * * * h = Reverse(h); * printf("7.Splitn"); * * * * } node *Delete(int data, node *h){ * printf("8.helpn"); * * * * break; * node *p, *t; } * * * case 2: * if(h==NULL) return h; * * * * printf("Ω–øȧJ±˝ßR∞£™∫愺∆≠»°G"); * p = h; * * * * if(scanf("%d", &data)==0) continue; * t = h->next; * * * * if(order) * if(data == p->data){ * * * * * h = Delete(data, h); * * p = p->next; * * * * else{ * * free(h); * * * * * h = Reverse(h); * * return p; * * * * * h = Delete(data, h); * } * * * * * h = Reverse(h); * while(data!=t->data){ * * * * } * * p = p->next; * * * * break; * * t = t->next; * * * case 3: * * if(t==NULL) return h; * * * * printf("Ω–øȧJ±˝∑j¥M™∫愺∆≠»°G"); * } * * * * if(scanf("%d", &data)==0) continue; * p->next = t->next; * * * * h1 = Search(data, h); * free(t);
  • 47. /*¶®•§jæ«∏Í∞T§uµ{æ«®t98Ø≈§AØZ≤¶•…¨u æ«∏π°GF74942294*/ * * * * printf("•H%dß@¨∞∞_¬I™∫Linked list°G", * * p = p->next; data); * * t = t->next; / * * * * print_list(h1); * * if(t==NULL) return h; ****************************************************************************** * * * * h1 = NULL; * } * * * * * break; * p->next = t->next; FileName: hw7_s.c * * * case 4: * free(t); Programmer: CrBoy * * * * printf("•ÿ´e™∫Linked list¶@¶≥%d≠”node * return h; Purpose: ≥–≥y§@≠”singly linked list®√∞ı¶Ê¶U∫ÿ•Ø‡ °Cn", Count(h)); } Input: * * * * break; Output: the standard out * * * case 5: node *Search(int data, node *h){ 刪除! Compilation: gcc hw7_s.c -o hw7_s * * * * h = Reverse(h); ! node *p=h; Run: ./hw7_s * * * * break; ! while(p!=NULL && data!=p->data)! p = p->next; Date: 2006/1/8 * * * case 6: ! return p; / * * * * printf("h1°G"); } ****************************************************************************** * * * * print_list(h1); / * * * * printf("h2°G"); int Count(node *h){ * * * * print_list(h2); ! int count=0; #include <stdio.h> * * * * h = Merge(h1, h2); ! while(h!=NULL){ * * * * h1 = h2 = NULL; ! ! count += 1; struct node{ * * * * break; ! ! h = h->next; * int data; * * * case 7: ! } * struct node *next; * * * * if(order) Split(&h, &h1, &h2); ! return count; }; * * * * else{ } * * * * * h = Reverse(h); typedef struct node node; * * * * * Split(&h, &h1, &h2); node *Reverse(node *h){ * * * * } * node *a, *b, *c; void print_list(node*);/*print_list(h); ¶C¶L•Hh∂}¿Y™∫linked list*/ * * * * printf("h1°G"); * if(h==NULL || h->next==NULL) return h; node *Insert(int, node*);/*Insert(data, h); ¶b•Hh∂}¿Y™∫linked list§§¥ * * * * print_list(h1); * a = h; °§Jdata®√¶^∂«∑s™∫h*/ * * * * printf("h2°G"); * b = a->next; node *Delete(int, node*);/*Delete(data, h); ¶b•Hh∂}¿Y™∫linked list§§ßR∞ * * * * print_list(h2); * c = b->next; £data®√¶^∂«∑s™∫h*/ * * * * break; * a->next = NULL; node *Search(int, node*);/*Search(data, h); ¶b•Hh∂}¿Y™∫linked list§§¥Mß * * * default: printf("±z™∫øȧJ¶≥ª~°In"); ! while(c!=NULL){ ‰data®√∂«¶^data©“¶b™∫¶Ï∏m*/ * * * case 8: help(); ! ! b->next = a; int Count(node*);/*Count(h); ≠p∫‚•Hh∂}¿Y™∫linked list§§™∫∏`¬I≠”º∆*/ * * } ! ! a = b; node *Reverse(node*);/*Reverse(h); §œß«±∆¶C•Hh∂}¿Y™∫linked list®√∂«¶^∑s™∫h*/ * } ! ! b = c; node *Merge(node*, node*);/*Merge(h1, h2); ¶X®÷h1ªPh2≥o2≠”linked ! temp = (node*)malloc(sizeof(node)); ! ! c = c->next; list®√¶^∂«¶X®÷´·™∫™∫head*/ ! temp->data = data; ! } void Split(node**, node**, node**);/*Split(&h, &h1, &h2); §¿≥Œh≥o≠”linked ! temp->next = p->next; * b->next = a; list¨∞©_∞∏º∆®√§¿ßO¶s®Ïh1ªPh2§§*/ ! p->next = temp; * order = !order; void help(); * return 0; * return b; } } int order=1; void print_list(node *h){ node *Merge(node *h1, node *h2){ int main(void){ * node *temp; * node *h, *temp; ! node *h1=NULL, *h2=NULL; * temp = h; * h = temp = h1->data < h2->data ? h1 : h2; ! while(*h!=NULL){ * while(temp != NULL){ * h1->data < h2->data ? (h1=h1->next) : (h2=h2->next); ! ! if((*h)->data%2){ * * printf("%d -> ", temp->data); * while(h1!=NULL && h2!=NULL){ ! ! ! if(h1==NULL) h1 = *h1_ptr = *h; * * temp = temp->next; * * temp = temp->next = h1->data < h2->data ? h1 : h2; ! ! ! else *h1_ptr = (*h1_ptr)->next = *h; * } * * h1->data < h2->data ? (h1=h1->next) : (h2=h2->next); ! ! }else{ * printf("NULLn"); * } ! ! ! if(h2==NULL) h2 = *h2_ptr = *h; } ! while(c!=NULL){ ! ! ! else *h2_ptr = (*h2_ptr)->next = *h; ! ! b->next = a; ! ! } node *Insert(int data, node *h){ ! ! a = b; ! ! *h = (*h)->next; * node *p, *t, *temp; ! ! b = c; ! } * if(h==NULL){ ! ! c = c->next; ! (*h1_ptr)->next = (*h2_ptr)->next = NULL; * * temp = (node*)malloc(sizeof(node)); ! } ! *h1_ptr = h1; * * temp->data = data; * h2 == NULL ? (temp->next=h1) : (temp->next=h2); ! *h2_ptr = h2; * * temp->next = NULL; * return h; ! *h = NULL; * * return temp; } 刪除! * int sel=8, data=0; * } * node *h=NULL, *h1=NULL, *h2=NULL; * p = h; void Split(node **h, node **h1_ptr, node **h2_ptr){ * help(); ! (*h1_ptr)->next = (*h2_ptr)->next = NULL; * node *h1=NULL, *h2=NULL; * while(sel){ ! *h1_ptr = h1; * while(*h!=NULL){ * * printf("n•ÿ´e™∫Linked list°G"); ! *h2_ptr = h2; * * if((*h)->data%2){ * * print_list(h); ! *h = NULL; * * * if(h1==NULL) h1 = *h1_ptr = *h; * * printf("Ω–øÔ拕؇°G"); * t = h->next; * * * else *h1_ptr = (*h1_ptr)->next = *h; * * if(scanf("%d", &sel)==0){ * if(data<p->data){ * * }else{ * * * sel=-1; * * temp = (node*)malloc(sizeof(node)); * * * if(h2==NULL) h2 = *h2_ptr = *h; 新增! * * * fflush(stdin); * * temp->data = data; * * * else *h2_ptr = (*h2_ptr)->next = *h; * * } * * temp->next = p; * * } * * switch(sel){ * * return temp; * * *h = (*h)->next; * * * case 0: break; * } * } ! ! ! case 1: * if(t!=NULL) * (*h1_ptr)->next = (*h2_ptr)->next = NULL; ! ! ! ! printf("Ω–øȧJ±˝¥°§J™∫愺∆≠»°G"); * * while(data<p->data || data>t->data){ * *h1_ptr = h1; ! ! ! ! if(scanf("%d", &data)==0) continue; * * * p = p->next; * *h2_ptr = h2; ! ! ! ! if(order) * * * t = t->next; * *h = NULL; ! ! ! ! ! h = Insert(data, h); * * * if(t==NULL) break; } ! ! ! ! else{ * * } ! ! ! ! ! h = Reverse(h); * temp = (node*)malloc(sizeof(node)); void help(){ ! ! ! ! ! h = Insert(data, h); * temp->data = data; * printf("0.µ≤ßÙn"); ! ! ! ! ! h = Reverse(h); * temp->next = p->next; * printf("1.Insertn"); ! ! ! ! } * p->next = temp; * printf("2.Deleten"); ! ! ! ! break; ! node *h=NULL, *h1=NULL, *h2=NULL; * printf("3.Searchn"); ! ! ! case 2: ! help(); * printf("4.Countn"); ! ! ! ! printf("Ω–øȧJ±˝ßR∞£™∫愺∆≠»°G"); * return h; * printf("5.Reversen"); ! ! ! ! if(scanf("%d", &data)==0) continue; } * printf("6.Mergen"); ! ! ! ! if(order) * printf("7.Splitn"); ! ! ! ! ! h = Delete(data, h); node *Delete(int data, node *h){ * printf("8.helpn"); ! ! ! ! else{ * node *p, *t; } ! ! ! ! ! h = Reverse(h); * if(h==NULL) return h; ! ! ! ! ! h = Delete(data, h); * p = h; ! ! ! ! ! h = Reverse(h); * t = h->next; ! ! ! ! } * if(data == p->data){ ! ! ! ! break; * * p = p->next; * * * case 3: * * free(h); * * * * printf("Ω–øȧJ±˝∑j¥M™∫愺∆≠»°G"); * * return p; * * * * if(scanf("%d", &data)==0) continue; * } * * * * h1 = Search(data, h); * while(data!=t->data){
  • 48. /*¶®•§jæ«∏Í∞T§uµ{æ«®t98Ø≈§AØZ≤¶•…¨u æ«∏π°GF74942294*/ * * * * printf("•H%dß@¨∞∞_¬I™∫Linked list°G", * * p = p->next; data); * * t = t->next; / * * * * print_list(h1); * * if(t==NULL) return h; ****************************************************************************** * * * * h1 = NULL; * } * * * * * break; * p->next = t->next; FileName: hw7_s.c * * * case 4: * free(t); Programmer: CrBoy * * * * printf("•ÿ´e™∫Linked list¶@¶≥%d≠”node * return h; Purpose: ≥–≥y§@≠”singly linked list®√∞ı¶Ê¶U∫ÿ•Ø‡ °Cn", Count(h)); } Input: * * * * break; Output: the standard out * * * case 5: node *Search(int data, node *h){ Compilation: gcc hw7_s.c -o hw7_s * * * * h = Reverse(h); ! node *p=h; Run: ./hw7_s * * * * break; ! while(p!=NULL && data!=p->data)! p = p->next; Date: 2006/1/8 * * * case 6: ! return p; / * * * * printf("h1°G"); } ****************************************************************************** * * * * print_list(h1); / * * * * printf("h2°G"); int Count(node *h){ * * * * print_list(h2); ! int count=0; #include <stdio.h> * * * * h = Merge(h1, h2); ! while(h!=NULL){ * * * * h1 = h2 = NULL; ! ! count += 1; struct node{ * * * * break; ! ! h = h->next; * int data; * * * case 7: ! } * struct node *next; * * * * if(order) Split(&h, &h1, &h2); ! return count; }; * * * * else{ } * * * * * h = Reverse(h); typedef struct node node; * * * * * Split(&h, &h1, &h2); node *Reverse(node *h){ * * * * } * node *a, *b, *c; void print_list(node*);/*print_list(h); ¶C¶L•Hh∂}¿Y™∫linked list*/ * * * * printf("h1°G"); * if(h==NULL || h->next==NULL) return h; node *Insert(int, node*);/*Insert(data, h); ¶b•Hh∂}¿Y™∫linked list§§¥ * * * * print_list(h1); * a = h; °§Jdata®√¶^∂«∑s™∫h*/ * * * * printf("h2°G"); * b = a->next; node *Delete(int, node*);/*Delete(data, h); ¶b•Hh∂}¿Y™∫linked list§§ßR∞ * * * * print_list(h2); * c = b->next; 刪除! £data®√¶^∂«∑s™∫h*/ * * * * break; * a->next = NULL; node *Search(int, node*);/*Search(data, h); ¶b•Hh∂}¿Y™∫linked list§§¥Mß * * * default: printf("±z™∫øȧJ¶≥ª~°In"); ! while(c!=NULL){ ‰data®√∂«¶^data©“¶b™∫¶Ï∏m*/ * * * case 8: help(); ! ! b->next = a; int Count(node*);/*Count(h); ≠p∫‚•Hh∂}¿Y™∫linked list§§™∫∏`¬I≠”º∆*/ * * } ! ! a = b; node *Reverse(node*);/*Reverse(h); §œß«±∆¶C•Hh∂}¿Y™∫linked list®√∂«¶^∑s™∫h*/ * } ! ! b = c; node *Merge(node*, node*);/*Merge(h1, h2); ¶X®÷h1ªPh2≥o2≠”linked ! temp = (node*)malloc(sizeof(node)); ! ! c = c->next; list®√¶^∂«¶X®÷´·™∫™∫head*/ ! temp->data = data; ! } void Split(node**, node**, node**);/*Split(&h, &h1, &h2); §¿≥Œh≥o≠”linked ! temp->next = p->next; * b->next = a; list¨∞©_∞∏º∆®√§¿ßO¶s®Ïh1ªPh2§§*/ ! p->next = temp; * order = !order; void help(); * return 0; * return b; } } int order=1; void print_list(node *h){ node *Merge(node *h1, node *h2){ int main(void){ * node *temp; * node *h, *temp; ! node *h1=NULL, *h2=NULL; * temp = h; * h = temp = h1->data < h2->data ? h1 : h2; ! while(*h!=NULL){ * while(temp != NULL){ * h1->data < h2->data ? (h1=h1->next) : (h2=h2->next); ! ! if((*h)->data%2){ * * printf("%d -> ", temp->data); * while(h1!=NULL && h2!=NULL){ ! ! ! if(h1==NULL) h1 = *h1_ptr = *h; * * temp = temp->next; * * temp = temp->next = h1->data < h2->data ? h1 : h2; ! ! ! else *h1_ptr = (*h1_ptr)->next = *h; * } * * h1->data < h2->data ? (h1=h1->next) : (h2=h2->next); ! ! }else{ * printf("NULLn"); * } ! ! ! if(h2==NULL) h2 = *h2_ptr = *h; } ! while(c!=NULL){ ! ! ! else *h2_ptr = (*h2_ptr)->next = *h; ! ! b->next = a; ! ! } node *Insert(int data, node *h){ ! ! a = b; ! ! *h = (*h)->next; * node *p, *t, *temp; ! ! b = c; ! } * if(h==NULL){ ! ! c = c->next; ! (*h1_ptr)->next = (*h2_ptr)->next = NULL; * * temp = (node*)malloc(sizeof(node)); ! } ! *h1_ptr = h1; * * temp->data = data; * h2 == NULL ? (temp->next=h1) : (temp->next=h2); ! *h2_ptr = h2; * * temp->next = NULL; * return h; ! *h = NULL; * * return temp; } * int sel=8, data=0; * } * node *h=NULL, *h1=NULL, *h2=NULL; * p = h; void Split(node **h, node **h1_ptr, node **h2_ptr){ * help(); ! (*h1_ptr)->next = (*h2_ptr)->next = NULL; * node *h1=NULL, *h2=NULL; * while(sel){ ! *h1_ptr = h1; * while(*h!=NULL){ * * printf("n•ÿ´e™∫Linked list°G"); ! *h2_ptr = h2; * * if((*h)->data%2){ * * print_list(h); ! *h = NULL; * * * if(h1==NULL) h1 = *h1_ptr = *h; * * printf("Ω–øÔ拕؇°G"); * t = h->next; * * * else *h1_ptr = (*h1_ptr)->next = *h; * * if(scanf("%d", &sel)==0){ * if(data<p->data){ * * }else{ 新增! * * * sel=-1; * * temp = (node*)malloc(sizeof(node)); * * * if(h2==NULL) h2 = *h2_ptr = *h; * * * fflush(stdin); * * temp->data = data; * * * else *h2_ptr = (*h2_ptr)->next = *h; * * } * * temp->next = p; * * } * * switch(sel){ * * return temp; * * *h = (*h)->next; * * * case 0: break; * } * } ! ! ! case 1: * if(t!=NULL) * (*h1_ptr)->next = (*h2_ptr)->next = NULL; ! ! ! ! printf("Ω–øȧJ±˝¥°§J™∫愺∆≠»°G"); * * while(data<p->data || data>t->data){ * *h1_ptr = h1; ! ! ! ! if(scanf("%d", &data)==0) continue; * * * p = p->next; * *h2_ptr = h2; ! ! ! ! if(order) * * * t = t->next; * *h = NULL; ! ! ! ! ! h = Insert(data, h); * * * if(t==NULL) break; } ! ! ! ! else{ * * } ! ! ! ! ! h = Reverse(h); * temp = (node*)malloc(sizeof(node)); void print_list(node *h){ ! ! ! ! ! h = Insert(data, h); * temp->data = data; ! node *temp; ! ! ! ! ! h = Reverse(h); * temp->next = p->next; ! temp = h; ! ! ! ! } * p->next = temp; ! while(temp != NULL){ ! ! ! ! break; ! node *h=NULL, *h1=NULL, *h2=NULL; ! ! printf("%d -> ", temp->data); ! ! ! case 2: ! help(); ! ! temp = temp->next; ! ! ! ! printf("Ω–øȧJ±˝ßR∞£™∫愺∆≠»°G"); * return h; ! } ! ! ! ! if(scanf("%d", &data)==0) continue; } ! printf("NULLn"); ! ! ! ! if(order) } ! ! ! ! ! h = Delete(data, h); node *Delete(int data, node *h){ ! ! ! ! else{ * node *p, *t; void help(){ ! ! ! ! ! h = Reverse(h); * if(h==NULL) return h; * printf("0.µ≤ßÙn"); ! ! ! ! ! h = Delete(data, h); * p = h; * printf("1.Insertn"); ! ! ! ! ! h = Reverse(h); * t = h->next; * printf("2.Deleten"); ! ! ! ! } * if(data == p->data){ * printf("3.Searchn"); ! ! ! ! break; * * p = p->next; * printf("4.Countn"); * * * case 3: * * free(h); * printf("5.Reversen"); * * * * printf("Ω–øȧJ±˝∑j¥M™∫愺∆≠»°G"); * * return p; * printf("6.Mergen"); * * * * if(scanf("%d", &data)==0) continue; * } * printf("7.Splitn"); * * * * h1 = Search(data, h); * while(data!=t->data){ * printf("8.helpn");