#include<stdio.h>#include<stdlib.h>typedef struct LINK{int data;struct LINK *next;}LINK;void RemoveDuplicates(LINK *head);void write(LINK *head);int main(){ int a[] = {1,2,4,3,2,5,3,4,5,6,3,3,24,5,2,32}; LINK *head; int i = 0; LINK *p; head = (LINK *)malloc(sizeof(LINK)); head->next = NULL; for(i= 0;i<16;i++) { p = (LINK *)malloc(sizeof(LINK)); p->next = NULL; p->data = a[i]; p->next = head->next; head->next = p; } write(head); RemoveDuplicates(head); write(head);}void RemoveDuplicates(LINK *head){ LINK *p = head;//后面数据 LINK *q = head;//前面数据 while(q->next!=NULL) { while(p->next->next!=NULL) { if(q->next->data == p->next->next->data)//p->next->next 是重复的。 { printf("%d",p->next->next->data); p->next->next = p->next->next->next; } p = p->next;//指针后移。 } q = q->next; p = q; }}void write(LINK *head){ LINK *p; p = head; while(p->next!=NULL) { printf("%d\t",p->next->data); p->next = p->next->next; }}
这个是代码,我执行出来没有结果。不知道哪里出问题了。
另外看看这道题我做的还有没有可优化的空间?
最高悬赏了。
把第一个 write(head); 注释掉之后结果倒是差不多,但是为什么多了第一个的输出结果?
还有一个问题,题中所要求的不许使用数据缓冲区是什么意思?我这样算是使用数据缓冲区了吗?
再不借助数据缓冲区的情况下,我这样的查重算法算是效率高的吗?还有更高的吗?
好吧,原来你已经改了我的算法。确实这样比较次数少了好多