数据结构作业

1.已知递增有序的两个单链表A,B分别存储了一个集合。设计算法实现求两个集合的交集的运算A=A∩B。
#include
typedef int DataType;
typedef struct node
{
DataType data;
struct node *next;
}list,*LinkList;
LinkList Union(LinkList A,LinkList B)
{
LinkList p,q,s,r;
p=A->next;
q=B->next;
r=A;
while (p&&q)
{
if (p->data==q->data)
{
r->next=p;
r=p;
p=p->next;
q=q->next;
}
else if (p->datadata)
p=p->next;
else
q=q->next;
}
r->next= NULL;
free(B);
return A;
}

2.设L为单链表的头结点地址,其数据结点的数据都是正整数且无相同的,试设计算法把该链表整理成数据递增的有序单链表。

#include
typedef int DataType;
typedef struct node
{
DataType data;
struct node *next;
}list,*LinkList;

LinkList sort(LinkList l)
{
int t,s;
LinkList a,b;
a=l->next;
s=1;
if(a)
while(s)
{
s=0;
b=a->next;
while(b&&(b->next!=NULL))
{
if(b->datanext->data)
{
t=b->data;
b->data=b->next->data;
b->next->data=t;
s=1;
}

b=b->next;
}

}

return l;
}


3.已知线性表(a1,a2,a3 …an)按顺序存于内存,每个元素都是整数,试设计用最少时间把所有值为负数的元素移到全部非负值元素前边的算法:例:(x,-x,-x,x,x,-x …x)变为(-x,-x,-x…x,x,x)。
#include
#define MAXSIZE 100
typedef int DataType;
typedef struct node
{
DataType data[MAXSIZE];
int length;
} SeqList, *PseqList;


PseqList p(int a[], int n)
{ int i=0,j,t;
j=n-1;
t=a[0];
while(i{
while(i=0)
j--;
if(i{a[i]=a[j];i++;}
while(ii++;
if(ia[j--]=a[i];
}
a[i]=t;
return a[i];
}








相关文档
最新文档