第一题:

输入整数4, 输出:

1
2*3
4*5*6
7*8*9*10
7*8*9*10
4*5*6
2*3
1
function main(x) {
    var array = new Array();
    var sum = 0;
    for (var i = 0; i < x; i++) {
        sum++;
        array[i] = sum.toString();
        for (var j = 2; j <= i + 1; j++) {
        sum++;
        array[i] += '*';
        array[i] += sum.toString();
        }
        console.log(array[i]);
    }
    for (var i = x - 1; i >= 0; i--) {
        console.log(array[i]);
    }
}
test = prompt('', '');
main(test);

第二题:

反转链表的后半段

lnode* relist(lnode *list)
{
    int n=0;
    for(lnode *p=list;p!=NULL;p=p->next)
    {
        ++n;
    }
    if(n%2)
    {
        n=(n+1)/2;//奇数个情况,如果有5个,则从第3个开始。
    }
    else
    {
        n/=2+1;//偶数个情况,如果有4个,则从第3个开始。
    }
    lnode *reHead,*flag;
    int i=0;
    for(lnode *p=list;p!=NULL;p=p->next)
    {
        ++i;
        if(i==n-1)
        {
            flag=p;
        }
        else if(i==n)
        {
            reHead=(lnode *)malloc(sizeof(lnode));
            reHead->next=NULL;
            reHead->value=p->value;
        }
        else if(i>n)
        {
            lnode *temp=(lnode *)malloc(sizeof(lnode));
            temp->value=p->value;
            temp->next=reHead;
            reHead=temp;
        }
    }
    delLi(&(flag->next));
    flag->next=reHead;
    return list;
}

void delLi(lnode **head)
{

    lnode *th=*head;
    for(lnode *temp=th;temp!=NULL;)
    {
        lnode *p=temp;
        temp=temp->next;
        free(p);
    }
    *head=NULL;
}