集合元素是用键盘输入后并自动删除数字,一切都是以小写字母字符为准,根据测试数据(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
是你,已经解决了,打扰了