已知一个线性表元素按非递减有序排列,编写一个函数删除线性表中多余的值相同的元素.是单链表
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/09/30 18:44:53
已知一个线性表元素按非递减有序排列,编写一个函数删除线性表中多余的值相同的元素.是单链表
哎!你刚提问题没多久,我就开始写代码,写到现在,不采纳真的是太对不起我了...
因为你没有写出具体的线性表,所以我假设该线性表是需要手动输入的!
代码如下运行通过:
#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;
}
}
因为你没有写出具体的线性表,所以我假设该线性表是需要手动输入的!
代码如下运行通过:
#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;
}
}
已知一个数组中的元素按元素值非递减有序排列,编写一个函数删除数组中多余的值相同的元素
用c++实现,假设有两个元素递增的有序排列线性表A和B,均以顺序表作存储结构.试编写算法将A表和B表归并成一个按元素值递
在一个长度为n的线性表中,删除值为x的元素时需要比较元素和移动元素的总次数为
已知长度为n的线性表A中的元素是整数,采用顺序储存结构,删除线性表中所有值为x的数据元素.
利用数组a[N]建立一个线性表,再从线性表中删除所有重复元素,并输出
数据结构问题:已知向量A中的n个元素按值非递减有序排列,试编一个算法,在此向量中插入一个值为x的新元素
一直长度为n的线性表A中的元素是整数,写算法删除线性表中所有值为item的数据元素.
在顺序存储结构的线性表中插入一个元素,平均需要移动( )个元素
对于长度为n的顺序存储的线性表,当随机插入和删除一个元素时,需平均移动元素的个数为
数据结构假设分别以两个元素的值递增有序线性表a,b表示两个集合,现在要构成一个新的线性表c,c表示a b的交,且c中的元
若一个线性表L采用顺序储存结构储存,其中所有元素为整数.设计一个算法,删除元素值在[x,y]之间的所有元素,要求算法的时
数据结构算法设计题:单循环链表中删除表中所有数值相同的多余元素