作业帮 > 综合 > 作业

利用数组a[N]建立一个线性表,再从线性表中删除所有重复元素,并输出

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/14 11:14:31
利用数组a[N]建立一个线性表,再从线性表中删除所有重复元素,并输出
/*下面的程序产生N个随机的整数,存放在数组a中.然后根据数组a建立线性链表,
再删除链表中所有重复元素,并输出无重复元素结点的链表结点的值
*/
#include
#include
#include
///////////////////////定义结点数据类型等//////////
#define N 15
typedef int DataType;
typedef struct node
{
\x09DataType data;
\x09struct node *next;
} NODE, *PNODE;
///////////////////////使用到的函数的声明//////////
void printList(PNODE list);
PNODE createList(DataType x[], int n);
void delRepeatedNodeOnce(PNODE list);
///////////////////////主函数//////////////////////
int main()
{
\x09PNODE linkedlist=NULL;
\x09int i;
\x09DataType a[N];
\x09//产生随机数组
\x09printf("产生 %d 个随机整数构成的数组:\n", N);
\x09srand(time(NULL));
\x09for (i=0;inext;//p指向找到重复值对应节点的前一个节点
\x09while(foundNode != NULL)//查找一个重复节点
\x09{
\x09\x09
\x09\x09if (foundNode->data == list->data) break;
\x09\x09p = foundNode;
\x09\x09foundNode = foundNode->next;
\x09}
\x09if (foundNode != NULL)
\x09{
\x09\x09p->next = foundNode->next;
\x09\x09free(foundNode);
\x09\x09delRepeatedNodeOnce(list); //递归调用,删除跟list对应节点有重复值的下一个节点
\x09}else
\x09{
\x09\x09delRepeatedNodeOnce(list->next);//递归调用,删除跟list后一个节点有重复值的第一个节点
\x09}
}