2年ぶりにC++を使う


今日、高校の同級生がメールを送って助けを求めて、プログラムを書いて、2つの単鎖表の合併を実現して、昇順に並べました.
ああ、最初はよく勉强していませんでしたが、データの构造が下手で、头を硬くして、本を読んで、资料を调べて、やっと使いました.
C++が作成されましたが、チェックミスで午後を費やしました.

#include <iostream>
using namespace std;
#define  NUM  8

struct LNode
{ 
 int data;
 struct LNode *next;
};

typedef struct LNode * LinkList;

/**
       
*/
  void create(LinkList &list, int a[])
{
 struct LNode *p;
 int i;
 list->next = NULL;

 for (i = NUM-1; i >= 0; --i)
 {
  p = new LNode;
  p->data = a[i];
  p->next = list->next;
  list->next = p;
 }
}

 
/**
       
*/
  void show(LinkList list)
{
 struct LNode *p;
 p = list->next;
 
 while (p)
 {
  cout << p->data << ' ';
  p = p->next;
 }
}

/**
    
  */
 LinkList Merge(LinkList la, LinkList lb, LinkList &lc)
 {
    
     LNode *p;

     //       la ,   lb 
     if(la->data > lb->data)
	 {
     lc = p = la;
     la = la->next; 
	 }
     else 
	 {
    lc = p = lb; 
    lb = lb->next;
	 }

     while(la && lb)
	 {
         if(la->data <= lb->data)
		 {
             p->next = la;
             la = la->next;
         }
		 else 
         {
             p->next = lb;
             lb = lb->next;
         }
		 
         p = p->next;
     }
     //          
    p->next = (la ? la:lb);

	 return lc;
 }
 

void main()
{
 LinkList s;
 LinkList u;
 LinkList A;

 int ss[NUM]={1,3,5,7,9,11,13,17};
 int uu[NUM]={2,8,14,19,21,25,26,33};


 s = new LNode;
 u = new LNode;
 A = new LNode;
 create(s, ss);
 create(u, uu);

 
 
 cout<<"  s  :"<<endl;
 show(s);
 cout<<endl;
 cout<<"  u  :"<<endl;
 show(u);
 cout<<endl;

 Merge(s,u,A);
 cout<<"      A  :"<<endl;
 show(A);
 cout<<endl;

}

プログラム=データ構造+アルゴリズム
基礎がしっかりしていないと発展しにくい.そうしないと、コード民工になるしかない.
自分に腹を立てて、一歩一歩、自分の夢に向かってゆっくりと前進します.
無駄な青春は自分で争わなければならない.