コード例 #1
0
ファイル: lt_list.c プロジェクト: dcf21/pyxplot8
char *ListPrint(List *in, char *out, int size)
 {
  ListIterator *iter;
  int pos,first;
  iter = ListIterateInit(in);
  pos=0; first=1;
  strcpy(out+pos, "["); pos += strlen(out+pos);
  while (iter != NULL)
   {
    if (pos > (size-30)) { strcpy(out+pos, ", ... ]"); return out; }// Truncate string as we're getting close to the end of the buffer
    if (first!=1) strcpy(out+(pos++), ",");
    if      (iter->DataType == DATATYPE_VOID  ) { strcpy (out+pos, "void"                         ); }
    else if (iter->DataType == DATATYPE_INT   ) { sprintf(out+pos, "%d"  , *((int    *)iter->data)); }
    else if (iter->DataType == DATATYPE_FLOAT ) { sprintf(out+pos, "%e"  , *((double *)iter->data)); }
    else if (iter->DataType == DATATYPE_VALUE ) { sprintf(out+pos, "%e+%ei <unit>", ((value *)iter->data)->real, ((value *)iter->data)->imag); }
    else if (iter->DataType == DATATYPE_STRING) { sprintf(out+pos, "'%s'",  ((char   *)iter->data)); }
    else if (iter->DataType == DATATYPE_LIST  ) { ListPrint( ((List *)iter->data), out+pos, size-pos); }
    else if (iter->DataType == DATATYPE_DICT  ) { DictPrint( ((Dict *)iter->data), out+pos, size-pos); }
    pos += strlen(out+pos);
    first=0;
    iter = ListIterate(iter, NULL);
   }
  strcpy(out+pos, "]"); pos += strlen(out+pos);
  return out;
 }
コード例 #2
0
int main()
{
  int n,m,i,e;
  LinkList L = NULL, p = NULL;
  L = InitList(L);
  L = CreateList_L(L,3);
  printf("...\n"); 
  L = ListPrint(L); 
  return 0;
}
コード例 #3
0
ファイル: SymTab.c プロジェクト: Johnlihj/torque
void SymTabPrint(void)
  {
  if (SymTabFpOut == NULL)
    SymTabErr(7);

  fprintf(SymTabFpOut, "**SymTabPrint\n");

  ListPrint(ST.L);

  fprintf(SymTabFpOut, "**end of SymTabPrint\n");
  }
コード例 #4
0
ファイル: main.c プロジェクト: prost0/course_project_8
int main()
{

    List *l = ListCreate();
    int code;
    int index;
    double item;
    instructions();
    while ((code =  getchar()) != EOF) {
        switch (code) {
            case 'p':
                ListPrint(l);
                break;
            case 'a':
                //printf("add: ");
                if (scanf("%d %lf", &index, &item) == 2) {
                    ListInsert(l, index, item);
                } else {
                    printf("Input error\n");
                }
                break;
            case 'd':
                if (scanf("%lf", &item) == 1) {
                    Node *item_ptr = ListFind(l, item);
                    if (item_ptr) {
                        ListDeleteNode(l, item_ptr);
                    } else {
                        printf("Incorrect index\n");
                    }
                } else {
                    printf("Input error\n");
                }
                break;
                
            case 'q':
                ListDestroy(&l);
                return 0;
                
            case 'e':
                ListExchange(l);
                break;
        }
    }
    ListDestroy(&l);
    return 0;
}
コード例 #5
0
ファイル: diskList.c プロジェクト: sscreation/MorphDB
int main(int argc, char** argv) {
   BinaryStr val;
   int i=0;
   ListNode* node,*end;

   if (argc <2) {
      printf("Usage : %s <existing list filename or new filename to store disk list> \n",argv[0]);
      return -1;
   }
   DiskList* dList = ListInit(argv[1]);
   printf("DiskList %p\n",dList);
   assert(dList);
   //Adding to the end

   while(1){
      int opt;
      printf("<list: choose operation [1-4] 4 for help~>");
      scanf("%d",&opt);
      if (opt > 7) {
         printf("Invalid option.\n");
         opt = 4;
      } 
      if (opt == 4) {
         printf("1 --> to add an element.\n");
         printf("2 --> to remove an element.\n");
         printf("3 --> to print list\n");
         printf("4 --> to print this help message\n");
         printf("5 --> Start transaction .\n");
         printf("6 --> Commit transaction.\n");
         printf("7 --> Abort transaction.\n");
         continue;
      }
      if (opt == 1) {
         int fVal,val;
         BinaryStr s;
         BlockMgrDiskPtr ptr;
         printf("Enter element to add after, enter non-existing element to add to end of the list.\n");
         printf(":~");
         scanf("%d",&fVal);
         printf("Enter value to add.\n");
         printf(":~");
         scanf("%d",&val);
         s.data = (char*)&fVal; 
         s.len = sizeof(fVal);
         if (ListFind(dList,s,&ptr)) {
            ptr = GetLast(dList);
         }
         assert((node = ListLoadNode(dList,ptr)));
         s.data = (char*) &val; 
         s.len = sizeof(val);
         ListAddAfter(dList,node,s);

      }
      if (opt ==3) {
         ListPrint(dList);
         printf("\n");
      }
      if (opt == 2) {
         int fVal,val;
         BinaryStr s;
         BlockMgrDiskPtr ptr;
         printf("Enter value to remove.\n");
         printf(":~");
         scanf("%d",&val);
         s.data = (char*)&val; 
         s.len = sizeof(val);
         if (ListFind(dList,s,&ptr)) {
            printf("Value %d does not exists in the list.\n",val);
            continue;
         }
         assert((node = ListLoadNode(dList,ptr)));
         s.data =(char*) &val; 
         s.len = sizeof(val);
         ListRemove(dList,node);
      }
      if (opt == 5) {
         printf("Starting transaction.\n");
         BlockMgrTransactStart(dList->handle);
      }
      if (opt == 6) {
         printf("Committing transaction.\n");
         BlockMgrTransactCommit(dList->handle);
         BlockMgrTransactReplay(dList->handle);
      }

      if (opt == 7) {
         printf("Aborting transaction.\n");
         BlockMgrTransactAbort(dList->handle);
      }
   }
   return 0;
}