也许数学上还能够优化.我们这个基本上是最优化的版本了.
感谢王斌同学和韩卫平老师的帮助.
code:
# include <iostream>
using namespace std;
struct Node
{
int Data;
Node *Next;
};
int main()
{ int i=2;
int j = 2;
Node *node = (Node*)malloc(sizeof(struct Node));
node->Next = NULL;
node->Data = 2;
Node *head = node;
Node *tmp = head;
for(i = 3; i <= 100; i++)//输入100个数,依次向表头插入.
{
Node *node = (Node*)malloc(sizeof(struct Node));
node->Data = i;
node->Next = NULL;
tmp->Next = node;
tmp = tmp->Next;
}
node=tmp = head;
//请注意!!这里因为我知道第一个节点2肯定不会被删掉,所以我不加判断的保留,
//如果是一个功能完全的链表,一定要判断头
while(node->Next!=NULL)
{tmp=node;
i=tmp->Data;
j=tmp->Data;//1)
while (tmp->Next != NULL)
{
//1) if ((tmp->Next->Data)%i=0)
if((tmp->Next->Data)==i*j)
{
Node *del = tmp->Next;
tmp->Next = tmp->Next->Next;
free(del);
j++;
}
else
{
if(tmp->Next->Data>i*j)
j++;
tmp = tmp->Next;
}
}
node=node->Next;
}
tmp = head;
while (tmp->Next)
{
cout << tmp->Data << " ";
tmp = tmp->Next;
}
cout << tmp->Data << endl;
return 0;
}
感谢王斌同学和韩卫平老师的帮助.
code:
# include <iostream>
using namespace std;
struct Node
{
int Data;
Node *Next;
};
int main()
{ int i=2;
int j = 2;
Node *node = (Node*)malloc(sizeof(struct Node));
node->Next = NULL;
node->Data = 2;
Node *head = node;
Node *tmp = head;
for(i = 3; i <= 100; i++)//输入100个数,依次向表头插入.
{
Node *node = (Node*)malloc(sizeof(struct Node));
node->Data = i;
node->Next = NULL;
tmp->Next = node;
tmp = tmp->Next;
}
node=tmp = head;
//请注意!!这里因为我知道第一个节点2肯定不会被删掉,所以我不加判断的保留,
//如果是一个功能完全的链表,一定要判断头
while(node->Next!=NULL)
{tmp=node;
i=tmp->Data;
j=tmp->Data;//1)
while (tmp->Next != NULL)
{
//1) if ((tmp->Next->Data)%i=0)
if((tmp->Next->Data)==i*j)
{
Node *del = tmp->Next;
tmp->Next = tmp->Next->Next;
free(del);
j++;
}
else
{
if(tmp->Next->Data>i*j)
j++;
tmp = tmp->Next;
}
}
node=node->Next;
}
tmp = head;
while (tmp->Next)
{
cout << tmp->Data << " ";
tmp = tmp->Next;
}
cout << tmp->Data << endl;
return 0;
}