答疑解惑必采纳 2021-08-02 17:36 采纳率: 91.3%
浏览 48
已结题

c语言问题,补全一下这个代码,确定两个列表中有多少元素是相同的

img
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>

struct node {
struct node *next;
int data;
};

int intersection_size(struct node *head1, struct node *head2);
struct node *strings_to_list(int len, char *strings[]);

// DO NOT CHANGE THIS MAIN FUNCTION
int main(int argc, char *argv[]) {
// create two linked lists from command line arguments
int dash_arg = argc - 1;
while (dash_arg > 0 && strcmp(argv[dash_arg], "-") != 0) {
dash_arg = dash_arg - 1;
}
struct node *head1 = strings_to_list(dash_arg - 1, &argv[1]);
struct node *head2 = strings_to_list(argc - dash_arg - 1, &argv[dash_arg + 1]);

int result = intersection_size(head1, head2);
printf("%d\n", result);

return 0;

}

// return the number of values which occur in both linked lists
// no value is repeated in either list
int intersection_size(struct node *head1, struct node *head2) {

// PUT YOUR CODE HERE (change the next line!)
return 42;

}

// DO NOT CHANGE THIS FUNCTION
// create linked list from array of strings
struct node *strings_to_list(int len, char *strings[]) {
struct node *head = NULL;
for (int i = len - 1; i >= 0; i = i - 1) {
struct node *n = malloc(sizeof (struct node));
assert(n != NULL);
n->next = head;
n->data = atoi(strings[i]);
head = n;
}
return head;
}

  • 写回答

3条回答 默认 最新

  • CSDN专家-link 2021-08-02 18:37
    关注
    int intersection_size(struct node *head1, struct node *head2) 
    {
        if(head1 == NULL || head2==NULL)
            return 0;
         int nCount = 0;
        struct node *p = head1;
        while(p != NULL)
        {
              struct node *q = head2;
              while(q != NULL)
              {
                  if(p->data == q->data)
                      nCount++;
                  q = q->next;
              }
              p = p->next;
        }
        return nCount;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月10日
  • 已采纳回答 8月2日
  • 创建了问题 8月2日