2014-11-14 48 views
0

我正在做一个编程任务,我没有完全掌握链接,因为我们还没有涉及。不过,我觉得我需要它做我想做的是数组不sufficent创建列表清单(结构)

我创建了一个结构从这个如下

struct node 
{ 
float coef; 
int expo; 
struct node *link; 
}; 

我可以创建指向各具有不同名称的结构,但是我遇到的问题是我想要用户输入来确定我构建的数量。我也希望能够添加和创建不同的结构。

+1

好的,那很好,你只需要保留一个指向头部结构的指针,然后在运行时就可以找到/创建其余的部分。 。 。那么问题是什么? – dsolimano 2014-11-14 18:40:40

+0

我遇到的问题是上面是一个多项式的结构。但我似乎无法找到创建未定义数量的多项式的方法。因此,用户可以选择在运行时删除或添加更多的多项式 – user3223190 2014-11-14 18:44:05

+0

因此,每个链接的结构列表都是一个多项式,并且您需要这些链接列表的可变数量? – dsolimano 2014-11-14 18:53:14

回答

1

您需要创建一个头指针来跟踪您的列表。

这可能会有所帮助:

struct list 
{ 
    struct node *head; 
    int count; 
}; 

而且你需要为每个新节点分配内存和头部移动到新创建的一个。

struct node *add_node(struct list *pList, float coef, int expo) 
{ 
    if (pList == NULL) 
    { 
     return NULL; 
    } 

    struct *node pNode = (struct node*)malloc(sizeof(struct node)); 

    if (node == NULL) 
    { 
     return NULL; 
    } 

    pNode->coef = coef; 
    pNode->expo = expo; 
    pNode->link = pList->head; 

    pList->head = pNode; 
    pList->count++; 

    return pNode; 
} 

要删除一个元素,您需要将头部向前移动,然后释放它之前的内存。

void *delete_node(struct list *pList, float coef, int expo) 
{ 
    if (pList == NULL) 
    { 
     return NULL; 
    } 


    struct node *tmp = pList->head; 

    pList->head = pList->head->link; 

    free(tmp); 

    pList->count--; 
} 

注:

这不是最终版本。我只是把我的手指指向应该做的事情。

0

我会尝试这样的事情作为你的数据结构

struct node 
{ 
    float coef; 
    int expo; 
    struct node *link; 
}; 

struct poly 
{ 
    node *value; 
    struct poly *link 
} 

保持的poly S,每个都包含的node个链表链表。

+0

这看起来是什么即时通讯寻找,我会尝试它。谢谢。如果它的工作,我会选择这个答案。 – user3223190 2014-11-14 19:37:12