在单链表中删除值相同的多余结点的算法。
来源:互联网 发布:淘宝上靠谱的韩代店 编辑:程序博客网 时间:2024/04/29 06:36
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
int data;
struct node *next;
} LinkList;
LinkList* initialList(LinkList *linkList){
linkList = NULL;
LinkList *p;
int myArray[10] = {1,2,3,4,2,1,5,6,4,6};
int i;
for(i = 0; i < 10; i ++){
p = (LinkList*)malloc(sizeof(LinkList));
p ->data = myArray[i];
printf("%d ", p ->data);
p ->next = linkList;
linkList = p;
}
printf("\n");
return linkList;
}
LinkList* deleteSame(LinkList *La){
LinkList *p, *q, *t, *tmp;
//Lc = NULL;
for(p = La; p ->next != NULL; p = p ->next){
q = p;
while(q ->next){
if(q ->next->data == p ->data){
if(q ->next->next != NULL){
t = q ->next;
//q ->data = t ->data;
q ->next = t ->next;
free(t);
continue;
}
else{
t = q ->next;
q ->next = NULL;
free(t);
}
}
else{
q = q ->next;
}
}
}
return La;
}
int main(){
LinkList *La;
La = initialList(La);
La = deleteSame(La);
printf("result is: ");
while(La){
printf("%d ", La ->data);
La = La ->next;
}
return 0;
}
#include<stdlib.h>
typedef struct node{
int data;
struct node *next;
} LinkList;
LinkList* initialList(LinkList *linkList){
linkList = NULL;
LinkList *p;
int myArray[10] = {1,2,3,4,2,1,5,6,4,6};
int i;
for(i = 0; i < 10; i ++){
p = (LinkList*)malloc(sizeof(LinkList));
p ->data = myArray[i];
printf("%d ", p ->data);
p ->next = linkList;
linkList = p;
}
printf("\n");
return linkList;
}
LinkList* deleteSame(LinkList *La){
LinkList *p, *q, *t, *tmp;
//Lc = NULL;
for(p = La; p ->next != NULL; p = p ->next){
q = p;
while(q ->next){
if(q ->next->data == p ->data){
if(q ->next->next != NULL){
t = q ->next;
//q ->data = t ->data;
q ->next = t ->next;
free(t);
continue;
}
else{
t = q ->next;
q ->next = NULL;
free(t);
}
}
else{
q = q ->next;
}
}
}
return La;
}
int main(){
LinkList *La;
La = initialList(La);
La = deleteSame(La);
printf("result is: ");
while(La){
printf("%d ", La ->data);
La = La ->next;
}
return 0;
}
0 0
- 在单链表中删除值相同的多余结点的算法。
- 设计在单链表中删除值相同的多余结点的算法
- 设单链表以非递减有序排列,设计算法实现在单链表中删除值相同的多余结点
- 设单链表以非递减有序排列,设计算法实现在单链表中删去值相同的多余结点。
- 删除相同的结点
- 删除链表中所有值相同的多余元素
- 删除两个双向链表值相同的结点
- 给定数组删除多余允许的相同的数
- 设计一个递归算法,删除不带头结点的单链表中所有值为x的结点
- [C++] 批量删除文件名多余的一个相同字符串
- 删除链表中值相同的多余节点
- 写一个函数DeleteRange删除单链表中结点的值在low 和high之间的结点
- 已知线性表中元素以值递增有序排列,并以单链表作为存储结构,设计一个算法,删除表中值相同的多余元素
- P318_1110_11 建表、删除符合要求的结点或者删除与其他链表相同的结点
- 雅虎面试题─将两个双向循环链表中data值相同的结点删除
- 【数据结构】单链表的倒序、删除相同结点、按值排序等简单操作用java实现
- 删除两个双向链表中值相同的结点--无空白头结点
- 删除两个双向链表中值相同的结点--带空白头结点
- 07-3. 数素数 (20)
- jvm 对象访问
- HTTP协议详解
- USACO4.2.3 Job Processing (job)
- Python正则表达式指南
- 在单链表中删除值相同的多余结点的算法。
- 多线程之ScheduledExecutorService
- Tsinsen 清橙 A1001 01序列 (BitSet)
- nohup命令浅析
- Qt实现移入移出与淡入淡出效果
- EXTJS 改变单选框或者复选框的 BoxLable
- Android修改自己程序字体
- Olympic奖牌榜排序
- Java线程(六):线程池