已知一个线性表元素按非递减有序排列,编写一个函数删除线性表中多余的值相同的元素。是单链表

如题所述

第1个回答  推荐于2017-11-25
哎!你刚提问题没多久,我就开始写代码,写到现在,不采纳真的是太对不起我了...
因为你没有写出具体的线性表,所以我假设该线性表是需要手动输入的!
代码如下运行通过:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
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;
}

}本回答被提问者和网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网