利用数组a[N]建立一个线性表,再从线性表中删除所有重复元素,并输出
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/03 06:57:22
![利用数组a[N]建立一个线性表,再从线性表中删除所有重复元素,并输出](/uploads/image/z/2095272-0-2.jpg?t=%E5%88%A9%E7%94%A8%E6%95%B0%E7%BB%84a%5BN%5D%E5%BB%BA%E7%AB%8B%E4%B8%80%E4%B8%AA%E7%BA%BF%E6%80%A7%E8%A1%A8%2C%E5%86%8D%E4%BB%8E%E7%BA%BF%E6%80%A7%E8%A1%A8%E4%B8%AD%E5%88%A0%E9%99%A4%E6%89%80%E6%9C%89%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0%2C%E5%B9%B6%E8%BE%93%E5%87%BA)
利用数组a[N]建立一个线性表,再从线性表中删除所有重复元素,并输出
利用数组a[N]建立一个线性表,再从线性表中删除所有重复元素,并输出
利用数组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}
}