1.why are you interested in join SDE?
2. given one continuous array, provide the factorial value for each element of the array.
Answers:
typedef struct element
{
int x;
struct element *next;
}element;
void insert_link_list(element ** head, int value)
{
element * tmp = (element*)malloc(sizeof(element));
tmp->x = value;
tmp->next = *head;
*head = tmp;
}
int factorial(int value)
{
int result = 0;
while(value)
{
result+= value*(value-1);
value--;
}
return result;
}
void print_link_list(element **head)
{
element **node;
for(node=head; (*node)!=NULL; node = &(*node)->next)
printf("%d\n", (*node)->x);
}
void main()
{
element *head=NULL;
int result;
for(int index=1;index<100;index++)
{
result = factorial(index);
insert_link_list(&head,result);
}
print_link_list(&head);
}
3. given one number, such as 100, please find all prime numbers starting from 1 to 100.
typedef struct element
{
int x;
struct element *next;
}element;
int is_prime_number(int n)
{
long c;
if (n <= 2)
return 1;
for (c = 2; c <=n/2; c++)
{
if ((n % c) == 0)
return 0;
}
return 1;
}
void insert_link_list(element **head,int index)
{
element *new_element;
new_element = (element*)malloc(sizeof(element));
new_element->x = index;
//new_element->next = NULL;
new_element->next = *head;
*head = new_element;
}
void insert_middle_link(element **head,int index)
{
element **node;
element *new_elem;
for(node=head;(*node)!=NULL;node = &(*node)->next)
{
if( (*node)->x == index)
{
new_elem = (element*)malloc(sizeof(element));
new_elem->x = index+1;
new_elem->next = (*node)->next;
(*node)->next = new_elem;
}
}
}
void delete_middle_list(element **head,int index)
{
element **node;
for(node=head;(*node)!=NULL;node = &(*node)->next)
{
if( (*node)->x == index)
{
(*node)= (*node)->next;
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int index;
element *prime_list=NULL;
element *new_element;
//element *new_element;
for(index=1;index<1000;index++)
{
if(is_prime_number(index))
{
insert_link_list(&prime_list,index);
printf("%d is prime number\n",index);
}
}
insert_middle_link(&prime_list,3);
delete_middle_list(&prime_list,3);
while(prime_list!=NULL)
{
printf("%d\n",(prime_list)->x);
prime_list=(prime_list)->next;
}
return 0;
}
No comments:
Post a Comment