已知一个线性表元素按非递减有序排列,编写一个函数删除线性表中多余的值相同的元素.是单链表
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/07 09:40:02
![已知一个线性表元素按非递减有序排列,编写一个函数删除线性表中多余的值相同的元素.是单链表](/uploads/image/z/2611003-67-3.jpg?t=%E5%B7%B2%E7%9F%A5%E4%B8%80%E4%B8%AA%E7%BA%BF%E6%80%A7%E8%A1%A8%E5%85%83%E7%B4%A0%E6%8C%89%E9%9D%9E%E9%80%92%E5%87%8F%E6%9C%89%E5%BA%8F%E6%8E%92%E5%88%97%2C%E7%BC%96%E5%86%99%E4%B8%80%E4%B8%AA%E5%87%BD%E6%95%B0%E5%88%A0%E9%99%A4%E7%BA%BF%E6%80%A7%E8%A1%A8%E4%B8%AD%E5%A4%9A%E4%BD%99%E7%9A%84%E5%80%BC%E7%9B%B8%E5%90%8C%E7%9A%84%E5%85%83%E7%B4%A0.%E6%98%AF%E5%8D%95%E9%93%BE%E8%A1%A8)
已知一个线性表元素按非递减有序排列,编写一个函数删除线性表中多余的值相同的元素.是单链表
已知一个线性表元素按非递减有序排列,编写一个函数删除线性表中多余的值相同的元素.是单链表
已知一个线性表元素按非递减有序排列,编写一个函数删除线性表中多余的值相同的元素.是单链表
哎!你刚提问题没多久,我就开始写代码,写到现在,不采纳真的是太对不起我了...
因为你没有写出具体的线性表,所以我假设该线性表是需要手动输入的!
代码如下运行通过:
#include
#include
#include
typedef int ElemType;
typedef struct Node
{
ElemType data;
struct Node *next;
}Node,*Sqlist;
void IniList(Sqlist *L) /*初始化*/
{
*L=(Sqlist)malloc(sizeof(Node));
(*L)->next=*L;
}
void Create_cLinkList(Sqlist L) /*尾插法建立链表*/
{
Node *s;
int c;
int flag=1;
bool bl;
L->data=NULL;
L->next=NULL;
while(flag)
{
bl=scanf("%d",&c);
if(bl)
{
s=(Node *)malloc(sizeof(Node));
s->data=c;
s->next=L->next;
L->next=s;
}
else
{
flag=0;
}
}
}
void Treserve( Sqlist &L) /*比较链表中的每个数字,重复就删除*/
{
Node *p;
Node *s;
s=p=L->next;
while(p->next!=NULL)
{
p=s;
p=p->next;
if(s->data==p->data)
{
if(p->next==NULL)
s->next=NULL;
else
s->next=p->next;
}
else
{
s=p;
}
}
}
main()
{
Sqlist la;
Node *p;
Node *s;
IniList(&la);
printf("输入循环单链表A数据,按从小到大的顺序输入,输入$符号结束:\n");
Create_cLinkList(la);
Treserve( la);
s=la;
p=la->next;
while(s->next!=NULL) /*输出改变后的链表*/
{
printf("%d",p->data);
s=p;
p=p->next;
}
}