在C中添加两个列表

时间:2015-05-13 08:04:02

标签: c list

我需要帮助。我想一起添加两个列表(两个列表的总和)。

这个想法是采用两个元素列表,我需要得到这两个列表的总和。答案应该是整数(int)。

以下是我的代码:

typedef struct element element;
struct element {
  int val;
  struct element *nxt;
};


enum { STOCK_MEM = 1024};

struct element memoire[STOCK_MEM];

typedef element* llist;

void init_memoire() {
  int i;
   for(i = 0; i < STOCK_MEM; i++)
    memoire[i].val = -2;
}

llist consDebut(llist liste, int valeur) {
  element* newEl = malloc(sizeof(element));
  newEl->val = valeur;
  newEl->nxt = liste;
  return newEl;
}

//Ajouter un élément en fin de la liste
llist consFin(llist liste, int valeur) {
  element* newEl = malloc(sizeof(element));
  newEl->val = valeur;
  newEl->nxt = NULL;
  if(liste == NULL) {
    return newEl;
  } else {
    element* temp = liste;
    while(temp->nxt != NULL) {
      temp = temp->nxt;
    }
    temp->nxt = newEl;
    return liste;
  }
}


int estVide(llist liste) {
  if(liste == NULL) {
    return 1;
  } else {
    return 0;
  }
}

int main() {
  init_memoire();
  llist newlist = NULL;
  int i;
  for(i = 1; i <= 3; i++) {
    newlist = consDebut(newlist, i);
    newlist = consFin(newlist, i);
  }


  llist list2 = NULL;
  int c;
  for(c = 1; c <= 5; c++) {
    list2 = consDebut(list2, c);
  }
return 0;
}

请有人帮忙吗

1 个答案:

答案 0 :(得分:0)

您可以在此链接中查找可用于执行此操作的代码: http://www.geeksforgeeks.org/add-two-numbers-represented-by-linked-lists/

并且你需要用整数表示求和,你可以通过在整数变量中保存最右边的数字来做到这一点,然后每当有其他元素来时你可以做变量= 10 ^ i +变量,其中我代表十个地方,比如i = 1表示10,i = 2表示100,依此类推。