数据结构单链表——一元多项式求导(C语言版)

最近在复习《数据结构》这门课,光看书本不练不行。所以我找到了学校的OJ平台,选择了一些难度不大的题来巩固知识。
寒假要努力学习,加油23考研人。

#include 
#include 
//定义链表结点
typedef struct LNode
{
    int xishu;
    int zhishu;
    LNode *next;
} LNode, *LinkedList;
//初始化链表
void InitList(LinkedList &L)
{
    L = (LinkedList)malloc(sizeof(LNode));
    L->next = nullptr;
}
//插入链表的数据,系数和指数
//这里题目要求降幂,所以采用尾插法
void InsertList(LinkedList &L, int index[], int length)
{
    LNode *q = L;
    for (int i = 0; i < length; i = i + 2)
    {
        LNode *p = (LNode *)malloc(sizeof(LNode));
        p->xishu = index[i];
        p->zhishu = index[i + 1];
        p->next = nullptr;
        q->next = p;
        q = p;
    }
}
void func(LinkedList &L)
{
    LNode *cur_point = L->next;
    while (cur_point != nullptr)
    {

        cur_point->xishu = cur_point->xishu * cur_point->zhishu;
        cur_point->zhishu--;
        cur_point = cur_point->next;
    }
}
void print(LinkedList L)
{
    LNode *p = L->next;
    int count = 0;
    while (p != nullptr && p->xishu != 0)
    {
        printf("%d %d ", p->xishu, p->zhishu);
        p = p->next;
        count++;
    }
    if (count == 0)
        printf("0\n");
}
int main()
{
    /*****
     * 输入:2 7 3 5 12 1 6 0 -1 -1
     * 输出:14 6 15 4 12 0
     * */
    int len = 0;
    int num = 0;
    int index[2000000];
    int i = 0;
    while (num != -1)
    {
        scanf("%d", &num);
        index[i++] = num;
        len++;
    }
    LinkedList L;
    InitList(L);
    InsertList(L, index, len);
    func(L);
    print(L);
}

你可能感兴趣的:(C语言数据结构,数据结构,c语言,链表)