求集合的并集交集和差的运算!由于是数据结构课设所以希望能在每排后加注释怎么运作以便好理解,用C++

集合元素是用键盘输入后并自动删除数字,一切都是以小写字母字符为准,根据测试数据(2)那里,选做内容最好能完成一个就好

还是最好用C就行

已经解决了

#include <stdio.h>

#include <malloc.h>


typedef struct _NODE_

{

   char val;

   struct _NODE_* next;

}NODE;


void insertNode(NODE ** head,char c)

{

   NODE *p = *head;

   NODE *prev = NULL;

   NODE *nd = NULL;

   int ok = 0;

   if(c > 'z' || c <'a')

      return;

   while(p)

   {

      if(p->val == c)

         return;

      else if(p->val > c)

      {

         nd = (NODE*)malloc(sizeof(NODE));

         nd->val = c;

         nd->next = p;

         if(prev != NULL)

         {

            prev->next = nd;

         }

         else

         {

            *head = nd;

         }

         ok = 1;

         break;

      }

      prev = p;

      p = p->next;

   }

   if(ok == 0)

   {

      if(prev)

      {

         nd = (NODE*)malloc(sizeof(NODE));

         nd->val = c;

         nd->next = NULL;

         prev->next = nd;

      }

   }

}

NODE * createSortedLink(char* set)

{

   NODE *head = (NODE*)malloc(sizeof(NODE));

   char *p = set + 1;

   char c = 0;

   head->next = NULL;

   head->val = set[0];

   while(*p)

   {

      c = *p;


      insertNode(&head,c);

      p++;

   }

   return head;

}

void printNode(NODE *head)

{

   NODE *temp = head;

   while(temp)

   {

      printf("%c ",temp->val);

      temp = temp->next;

   }

   printf("\n");

}

NODE* unionSet(NODE *node1,NODE *node2)

{

   NODE *head = (NODE*)malloc(sizeof(NODE));

   NODE *t1 = node1;

   NODE *t2 = node2;

   head->next = NULL;

   head->val = t1->val;

   t1 = t1->next;

   while(t1)

   {

      insertNode(&head,t1->val);

      t1=t1->next;

   }

   while(t2)

   {

      insertNode(&head,t2->val);

      t2=t2->next;

   }



   return head;

}

int main()

{

   char set1[100]={0};

   char set2[100]={0};

   NODE *node1 = NULL;

   NODE *node2 = NULL;

   NODE *node3 = NULL;

   printf("请输入集合1:\n");

   scanf("%[^\n]",&set1);

   fflush(stdin);

   printf("请输入集合2:\n");

   scanf("%[^\n]",&set2);

   node1 = createSortedLink(set1);

   node2 = createSortedLink(set2);

   node3 = unionSet(node1,node2);

   printNode(node3);


   return 0;

}



既然已经ok了,你就不用采纳了,代码你作为参考就好了。或者你把帖子删除(不知道可不可以),不然浪费了。

https://biwen.csdn.net/question/3909

是你,已经解决了,打扰了