网站大部分都是jsp做的,长沙百家号seo,艺术培训学校系统网站怎么做,小程序模板源码免费下载题目描述
已知线性表中的元素以递增序列排列#xff0c;并以单链表作存储结构。设计算法删除表中所有值相同的多余元素#xff08;使得操作后的线性表中所有的值均不相同#xff09;#xff0c;同时释放被删结点空间#xff0c;并分析算法的时间复杂度。
输入
第一行输…题目描述
已知线性表中的元素以递增序列排列并以单链表作存储结构。设计算法删除表中所有值相同的多余元素使得操作后的线性表中所有的值均不相同同时释放被删结点空间并分析算法的时间复杂度。
输入
第一行输入一个正整数n表示元素个数n100。 第二行输入n个正整数元素保证元素以递增排列元素的值100。
输出
输出删除相同元素后的链表。
样例输入
5
1 1 3 4 4
样例输出
1 3 4
代码
#includebits/stdc.h
using namespace std;
typedef struct LNode{int data;struct LNode *next;LNode(int data):data(data),next(NULL){};
}LNode,*LinkList;LinkList CreateLinkList(int n){//创建单链表 LinkList L (LNode *)malloc(sizeof(LNode));//创建头结点int val;LNode *p;//接收新结点 LNode *tail L;//尾指针指向链表的最后一个结点while(n--){scanf(%d,val);p (LNode *)malloc(sizeof(LNode));p-data val;tail-next p;tail tail-next;pp-next;}tail-nextNULL;return L;
}
/*LinkList CreateLinkList(int n){LinkList L new LNode(-1);//创建头结点LNode *tailL;int val;while(n--){// int val;scanf(%d,val);LNode *p new LNode(val);tail-next p;tail tail-next;} tail-next NULL;return L;
} */
LinkList Delete_Duplicate(LinkList L,int len){if(L-nextNULL)return NULL;///如果输入结点为空 LNode *pre L;//定义一个指针指向头结点的下一个结点LNode *p L-next;while(p!NULL){if(pre-data p-data){pre-next p-next;free(p);ppre-next;len--;}else{pre p;pp-next;}}return L;}
int main(void){int n;scanf(%d,n);int len n;LinkList L CreateLinkList(len);LNode *pL-next;LinkList A Delete_Duplicate(L-next,len);LNode *x A-next;for(int i0;ilen;i){printf(%d ,A-data);AA-next;}return 0;
}