利用树形结构辅助实现去重算法
发布于: 2020 年 05 月 24 日
本文主要通过借助树形结构来实现去重算法,旨在阐述算法构建的一种思想。
让我们一起来体验算法思想的博大精深。
纯属原创,还请各位多多指导。
#include<stdio.h>
#include<stdlib.h>
//define struct
typedef struct Node Node;
typedef struct Node * Pnode;
struct Node{
int val;
Pnode next;
};
//define algo
Pnode initLinkedList();
Pnode initLinkedList(){
Pnode head = (Pnode)malloc(sizeof(Node));
head->val = -1;
head->next = NULL;
return head;
}
void addNodeAtTail(Pnode L,int val);
void addNodeAtTail(Pnode L,int val){
Pnode p = L;
while(p->next){
p = p->next;
}
Pnode newNode = (Pnode)malloc(sizeof(Node));
newNode->val = val;
newNode->next = NULL;
p->next = newNode;
}
void printfLinkedList(Pnode L);
void printfLinkedList(Pnode L){
Pnode p = L->next;
while(p){
printf("%d->",p->val);
p = p->next;
}
printf("NULL\n");
}
typedef struct Tnode Tnode;
typedef struct Tnode * Ptnode;
struct Tnode{
int val;
int count;
Ptnode left;
Ptnode right;
};
Ptnode initBinaryTree(Ptnode T,int val){
if(!T){
Ptnode t = (Ptnode)malloc(sizeof(Tnode));
t->val = val;
t->count = 1;
t->left = NULL;
t->right = NULL;
T = t;
return T;
}
if(val == T->val){
++T->count;
return T;
}
if(val > T->val){
if(!T->right){
Ptnode t = (Ptnode)malloc(sizeof(Tnode));
t->val = val;
t->count = 1;
T->right = t;
}else{
initBinaryTree(T->right,val);
}
}
return T;
}
void printBinaryTree(Ptnode T);
void printBinaryTree(Ptnode T){
if(T){
printf("%d->",T->val);
}
if(T->right){
printBinaryTree(T->right);
}
}
void delRepeat(Pnode L);
void delRepeat(Pnode L){
Pnode p = L->next;
Ptnode T = NULL;
while(p){
T = initBinaryTree(T,p->val);
p = p->next;
}
printBinaryTree(T);
printf("NULL\n");
}
void main(){
Pnode h1 = initLinkedList();
addNodeAtTail(h1,1);
addNodeAtTail(h1,2);
addNodeAtTail(h1,2);
addNodeAtTail(h1,3);
addNodeAtTail(h1,3);
addNodeAtTail(h1,4);
addNodeAtTail(h1,9);
printf("L1 is: ");
printfLinkedList(h1);
delRepeat(h1);
}
复制代码
划线
评论
复制
发布于: 2020 年 05 月 24 日阅读数: 81
版权声明: 本文为 InfoQ 作者【卓丁】的原创文章。
原文链接:【http://xie.infoq.cn/article/aa2ddfb64ea4f4270b9018772】。文章转载请联系作者。
卓丁
关注
鸟过无痕 2017.12.10 加入
泰戈尔:虽然天空没有留下我的痕迹,但我已飞过。
评论