Beispiel #1
0
	foreach(lc, restrictinfolist)
	{
		List	   *targetcolumns;
		RestrictInfo *node = (RestrictInfo *) lfirst(lc);

		targetcolumns = pull_var_clause((Node *) node->clause,
										PVC_RECURSE_AGGREGATES,
										PVC_RECURSE_PLACEHOLDERS);
		columns = list_union(columns, targetcolumns);
	}
void test_concat_append_add_union_intersection_difference(void)
{     
     List list1 = list_random(MAX_LIST_SIZE, ELEMENT_MAX_VALUE);
     list_sort_by_item(&list1);
     list_unique(&list1);
     printf("Original List 1 ::: ");
     list_print(&list1);

     List list2 = list_random(MAX_LIST_SIZE, ELEMENT_MAX_VALUE);
     list_sort_by_item(&list2);
     list_unique(&list2);
     printf("%sOriginal List 2 ::: ", brown);
     list_print(&list2);

     List concat = list_concat(&list1, &list2);
     printf("%sConcatenation List ::: ", cyan);
     list_print(&concat);

     List append = list_duplicate(&list1);
     list_append(&append, &list2);
     printf("%sList 1 appended to list 2 ::: ", magenta);
     list_print(&append);
     
     List add = list_duplicate(&list1);
     list_add(&add, &list2);
     printf("%sList 1 added to list 2 ::: ", green);
     list_print(&add);

     List union_list = list_union(&list1, &list2);	
     printf("%sList Union ::: ", blue);
     list_print(&union_list);

     List intersection_list = list_intersection(&list1, &list2);
     printf("%sList Intersection ::: ", red);
     list_print(&intersection_list);

     List difference_list = list_difference(&list1, &list2);
     printf("%sDifference List ::: ", cyan);
     list_print(&difference_list);

     uint union_size = list_union_size(&list1, &list2);
     printf("%sList Union Size = %d\n", brown, union_size);

     uint intersection_size = list_intersection_size(&list1, &list2);
     printf("%sList Intersection Size = %d\n", black, intersection_size);

     uint difference_size = list_difference_size(&list1, &list2);
     printf("%sList Difference Size = %d\n", black, difference_size);
     
     printf("%s",none);

}
Beispiel #3
0
/*
 * The list of needed columns (represented by their respective vars)
 * is pulled from:
 *	- the targetcolumns
 *	- the restrictinfo
 */
List *
extractColumns(List *reltargetlist, List *restrictinfolist)
{
	ListCell   *lc;
	List	   *columns = NULL;
	int			i = 0;

	foreach(lc, reltargetlist)
	{
		List	   *targetcolumns;
		Node	   *node = (Node *) lfirst(lc);

		targetcolumns = pull_var_clause(node,
										PVC_RECURSE_AGGREGATES,
										PVC_RECURSE_PLACEHOLDERS);
		columns = list_union(columns, targetcolumns);
		i++;
	}
Beispiel #4
0
int main()
{
    list_t a = make_ascending_list(5);
    insert('z', header(a));
    list_t b = make_ascending_list(12);
    traversal(print_node, a);
    sep;
    traversal(print_node, b);
    sep;
    list_t u = list_union(a, b);
    traversal(print_node, u);
    sep;
    list_t i = list_intersection(a, b);
    traversal(print_node, i);
    
    destory(a);
    destory(b);
    destory(u);
    destory(i);

    return 0;
}
Beispiel #5
0
int main(int argc, char** argv) {

	Ri = 0;
	Si = 0;
	Ti=0;
	/* INITAILAISATION */
	int i;
	for (i = 0; i < TAILLE_R; i++)
		R[i] = 0;
	for (i = 0; i < TAILLE_S; i++)
		S[i] = 0;

	R[0] = 1;
	for (i = 1; i < TAILLE_R; i++)
		R[i] = R[i - 1] + 2;

	S[0] = 1;
	for (i = 1; i < TAILLE_S; i++)
		if (i % 2 == 1)
			S[i] = S[i - 1] + 1;
		else
			S[i] = S[i - 1] + 3;

	printf("\nS : ");
	for (i = 0; i < TAILLE_S; i++)
		printf("%d ", S[i]);
	printf("\nR : ");
	for (i = 0; i < TAILLE_R; i++)
		printf("%d ", R[i]);

	printf("\n\n");

	for(i=0;i<10;i++)
		list2_insert(&Ri,i,Nullptr(list2));

	for (i = 0; i < TAILLE_R; i++) {
		int r = R[i];
		int index = r % 10;
		list2_insert_fils(&Ri, index, r);
	}


	for(i=0;i<10;i++)
			list2_insert(&Si,i,Nullptr(list2));

	for (i = 0; i < TAILLE_S; i++) {
		int s = S[i];
		int index = s % 10;
		list2_insert_fils(&Si, index, s);
	}

	printf("LES Ri generer\n");
	list2_affiche(Ri);
	printf("LES Si generer\n");
	list2_affiche(Si);



	pthread_t threads[NUM_THREADS];
	int rc;
	int t;
	for (t = 0; t < NUM_THREADS; t++) {
		//printf("In main: creating thread %ld\n", t);
		rc = pthread_create(&threads[t], NULL, threadAlgo, (void *) t);
		if (rc) {
			printf("ERROR; return code from pthread_create() is %d\n", rc);
			exit(-1);
		}
	}

	for (t = 0; t < NUM_THREADS; t++)
	{
		list *returnedResult;
		pthread_join(threads[t],&returnedResult);
		list_union(&Ti,returnedResult);
	}

	printf("Result Final T : ");
 	list_affiche(Ti);
	/* Last thing that main() should do */
	pthread_exit(NULL);
	return 0;
}
main()
{
	/* Declarations Start */
	status_code SC;
	boolean boolval;
	FILE *fp;
	employee_type *emp_ptr,*ptr;
	employee_type *list1,*list2,*list3;
	employee_type *duplicate;
	empname_type *name_ptr,*ptr_name;
	char dumbo[2];
	char emp_name[NAME_LEN];
	char proj_name[NAME_LEN];
	char c;
	unsigned int Hrs;
	unsigned int emp_salary;
	char emp_address[ADD_LEN];
	unsigned long int phone;
	int option,contnue;
	int numRecords,maxNumHrs;
	/* Declarations End */
	/* Initialisations Start */
	emp_ptr=NULL;
	name_ptr=NULL;
	ptr_name=NULL;
	ptr=NULL;
	list1=NULL;
	list2=NULL;
	list3=NULL;
	duplicate=NULL;
	fp=NULL;
	/* Initialisations End */
	/* Start Reading Data from File */
    fp=fopen("record.txt","a");
    fclose(fp);
    fp=fopen("record.txt","r");
    while((c=getc(fp)) != EOF)
    {
		fseek(fp,-sizeof(char),1);
	    fscanf(fp,"%s %s %u %u %s %lu",emp_name,proj_name,&Hrs,&emp_salary,emp_address,&phone);
	    SC=insert(&emp_ptr,emp_name,proj_name,Hrs,emp_salary,emp_address,phone);
	}
	fclose(fp);
	fp=NULL;
	/* End Reading Data from File */
	do
	{
		/* Asking for Option */
		puts("ENTER the option as per the operation you want to do. ENTER :-\n");
		puts("1- insert/update\n2- delete\n3- getNumRecords\n4- isEmpty\n5- List_Unique\n6- getMaxNumHrs\n7- list_union\n8- list_intersection\n9- list_difference\n10- list_symmetric_difference\n");
		printf("Your Choice is:- ");
		scanf("%d",&option);
		printf("\n\n");
		switch (option)
		{
			/* INSERT/UPDATE */
			case 1: {
						    printf("***********INSERT**********\n\n");
						    /* Data Entering Start */
							printf("Enter Employee Name :-\t");
							gets(dumbo);
							gets(emp_name);
							remove_space_make_uppercase(emp_name);
							printf("Enter Employee's Project Name :-\t");
							gets(proj_name);
							remove_space_make_uppercase(proj_name);
							printf("Enter Number of Hours :-\t");
							scanf("%u",&Hrs);
							printf("Enter Employee's Salary :-\t");
							scanf("%u",&emp_salary);
							printf("Enter Employee's Address :-\t");
							gets(dumbo);
							gets(emp_address);
							remove_space_make_uppercase(emp_address);
							printf("Enter Employee's Phone Number :-\t");
							scanf("%lu",&phone);
							/* Data Entering End */
							/* Inserting/Updating Data */
							SC=insert(&emp_ptr,emp_name,proj_name,Hrs,emp_salary,emp_address,phone);
							if(SC==SUCCESS)
							{
								puts("\n**********Data inserted**********\n");	
							}
							else
							{
								puts("\n**********Data insertion failed**********\n");	
							}
					  		break;
				     }
			/* DELETE */
			case 2:  {
							printf("***********DELETE**********\n\n");
							/* Data Entering Start */
							printf("Enter Employee Name :-\t");
							gets(dumbo);
							gets(emp_name);
							remove_space_make_uppercase(emp_name);
							printf("Enter Employee's Project Name :-\t");
							gets(proj_name);
							remove_space_make_uppercase(proj_name);
							/* Data Entering End */
							/* Deleting Data */
							SC=delete_entry(&emp_ptr,emp_name,proj_name);
							if(SC==SUCCESS)
							{
								puts("\n**********Data deleted**********\n");	
							}
							else
							{
								puts("\n**********Data deletion failed**********\n");	
							}
							break;
					 } 
			/* getNumRecords */  
			case 3:  {
							printf("***********getNumRecords**********\n\n");
							numRecords=getNumRecords(emp_ptr);
							printf("\n\nNumber of ACTIVE record in the list is :-  %d",numRecords);
							break;
					 }
			/* isEmpty */
			case 4:  {
							printf("***********isEmpty**********\n\n");
							boolval=isEmpty(emp_ptr);
							if(boolval==NO)
							{
								puts("The list is NOT EMPTY");	
							}
							else
							{
								puts("The list is EMPTY");	
							}
							break;
					 }
			/* list_unique */
			case 5:  {
							printf("***********list_unique**********\n\n");
							/* Creating Duplicate Entries for Testing */
							duplicate=create_duplicate();
							list_unique(duplicate);
							printf("\n\n*****LIST MADE UNIQUE*****\n\n");
							print(duplicate);
							freeof_employee(&duplicate);
							break;
					 }
			/* getMaxNumHrs */
			case 6:  {
							printf("***********getMaxNumHrs**********\n\n");
							/* Data Entering Start */
							printf("Enter Project Name :-\t");
							gets(dumbo);
							gets(proj_name);
							remove_space_make_uppercase(proj_name);
							/* Data Entering End */
							maxNumHrs=getMaxNumHrs(emp_ptr,proj_name,&name_ptr);
							printf("\nMaximum hours spent in the given project is :-  %d\n\n",maxNumHrs);
							if(maxNumHrs!=0)
							{
								printf("Employee's spending maximum hours in this project are :-\n");
								ptr_name=name_ptr;
								while(ptr_name!=NULL)
								{
									puts(ptr_name->employee_name);
									ptr_name=ptr_name->next;	
								}
							}
							freeof_empname(&name_ptr);
							ptr_name=NULL;
							break;
					 }
			/* list_union */	
	   	    case 7:  {
							printf("***********list_union**********\n\n");
							/* Creating list1 and list2 for Testing */
							puts("*****Creating Testing Entries for list1*****");
							list1=create_checklist();
							puts("*****Creating Testing Entries for list2*****");
							list2=create_checklist();
							list3=list_union(list1,list2);
							printf("\n\n*****UNION of the given lists is as follows*****\n\n");
							print(list3);
							freeof_employee(&list1);
							freeof_employee(&list2);
							freeof_employee(&list3);
							break;
					 }
			/* list_intersection */
			case 8:  {
							printf("***********list_intersection**********\n\n");
							/* Creating list1 and list2 for Testing */
							puts("*****Creating Testing Entries for list1*****");
							list1=create_checklist();
							puts("*****Creating Testing Entries for list2*****");
							list2=create_checklist();
							list3=list_intersection(list1,list2);
							printf("\n\n*****INTERSECTION of the given lists is as follows*****\n\n");
							print(list3);
							freeof_employee(&list1);
							freeof_employee(&list2);
							freeof_employee(&list3);
							break;
					 }
			/* list_difference */
			case 9:  {
							printf("***********list_difference**********\n\n");
							/* Creating list1 and list2 for Testing */
							puts("*****Creating Testing Entries for list1*****");
							list1=create_checklist();
							puts("*****Creating Testing Entries for list2*****");
							list2=create_checklist();
							list3=list_difference(list1,list2);
							printf("\n\n*****DIFFERENCE of the given lists is as follows*****\n\n");
							print(list3);
							freeof_employee(&list1);
							freeof_employee(&list2);
							freeof_employee(&list3);
							break;
					 }
			/* list_symmetric_difference */
			case 10:  {
							printf("***********list_symmetric_difference**********\n\n");
							/* Creating list1 and list2 for Testing */
							puts("*****Creating Testing Entries for list1*****");
							list1=create_checklist();
							puts("*****Creating Testing Entries for list2*****");
							list2=create_checklist();
							list3=list_symmetric_difference(list1,list2);
							printf("\n\n*****SYMMETRIC DIFFERENCE of the given lists is as follows*****\n\n");
							print(list3);
							freeof_employee(&list1);
							freeof_employee(&list2);
							freeof_employee(&list3);
							break;
					 }
			/* Default */
			default: {
							break;
					 }
		}
		/* Asking for CHOICE to Continue */
		puts("\n\nIf you want to continue... ? Enter 1 if YES or 0 if NO\n");
		printf("Your Choice is:- ");
		scanf("%d",&contnue);
		printf("\n\n");
	}while(contnue==1);
	/* Start Writing Data from File */
    fp=fopen("record.txt","w");
    ptr=emp_ptr;
    while(ptr!=NULL)
    {
       fprintf(fp,"%s %s %u %u %s %lu",ptr->employee_name,ptr->project_name,ptr->numHrs,ptr->employee_salary,ptr->employee_address,ptr->phone_number);
       ptr=ptr->next;
    }
    fclose(fp);
    fp=NULL;
    /* End Writing Data from File */
	if(emp_ptr!=NULL)
	{
		print(emp_ptr);
		freeof_employee(&emp_ptr);
	}
	getch();
}