sortseq.c
上传用户:gzelex
上传日期:2007-01-07
资源大小:707k
文件大小:1k
开发平台:

MultiPlatform

  1. #include <LEDA/sortseq.h>
  2. #include <LEDA/stream.h>
  3. void print(sortseq<string,int>& S)
  4. { seq_item it;
  5.   cout << S.size() << endl;
  6.   forall_items(it,S) cout << S.key(it) << endl;
  7.   newline;
  8. }
  9. void print1(sortseq<string,int> S)
  10. {
  11.   cout << S.size() << endl;
  12.   while( !S.empty() )
  13.   { seq_item it = S.min();
  14.     cout << S.key(it) << endl;
  15.     S.del_item(it);
  16.    }
  17.   newline;
  18. }
  19. main()
  20. {
  21.   sortseq<string,int> S,S1,S2;
  22.   file_istream input(read_string("file name: "));
  23.   string s;
  24.   while (input >> s)  S.insert(s,0);
  25.   cout << S.size() << " strings.nn";
  26. cout << "print: " << endl;
  27.   print(S);
  28. cout << "print1: " << endl;
  29.   print1(S);
  30.   string s1,s2;
  31.   do { s1 = read_string("s1 = ");
  32.        s2 = read_string("s2 = ");
  33.  
  34.        if (s1 > s2) 
  35.         { cerr << "illegal input: s1 > s2.n";
  36.           continue;
  37.          }
  38.  
  39.        seq_item it1 = S.locate(s1);
  40. /*
  41.        cout << "SPLIT at " << S.key(it1) << "n";
  42.        newline;
  43. */
  44.        seq_item it2 = S.locate(s2);
  45.      
  46.        while (it1!=it2)
  47.          { cout << S.key(it1) << "n"; 
  48.            it1 = S.succ(it1);
  49.           }
  50. /*
  51.        S.split(it1,S1,S2);  //now S is mepty
  52.        print(S1);
  53.        print(S2);
  54.        S1.conc(S2);         //now S2 is empty
  55.        S.conc(S1);          //now S1 is empty
  56. */
  57.      } while (s1 != "");
  58.     
  59.   return 0;
  60. }