小悠(高山):高分求数据结构题目答案

来源:百度文库 编辑:中科新闻网 时间:2024/04/30 05:56:10
1.设有2个集合。A={2,6,3,5,7,1}, B={3,4,6,2,9,10,12} 求C=A交B={2,6,3,1} 输出C数组,
1),int judgement(int a[],int n,int x,)问X是否存在数组中?
2),void intersection(int a[],int n,int b[],int m,int c[],int &k),
3),void printarray(int a[],int n)输出数组的n个元素,

2,设有一个有序序列,从键盘输入一个数,问是否在序列中.如果在输出yes,否则,将它插入到序列中使它仍然有序,并输出排序后的序列,
动态数组定义为:
Typedef struct Array{
int *elem 存放数组元数;
int length 存放数组元数个数;
}Array
1) int judgement(Array a,int x)
2) void insertelem (Array @a, int x)
3) void printarray (Array a)

3设有一有序序列,从键盘输入一个数,问是否在序列中.如果在输出yes,否则^^^^^^^删除它.并输出删除后的序列.
4,从键盘输入一组任意数据,建立一带头结点的有序链表,并输出该链表,使输出的结果是有序的。
链表的结构定义为:
typedef struct Node{
int data; 存放数组元素;
struct Node *next;存放数组元素个数;
}*Link;
1),int initLink(Link &L) 初始化带表头结点的链表L;
2),void insertelem(Link &L,int x) 从X插入到有序链表L中;
3),void printLink(Link L) 输出带头结构的链表;

#include <iostream>
using namespace std;

int judgement(int a[],int n,int x)
{
for(int i = 0; i < n ; i++)
{
if(a[i] == x)
return 1;
}
return 0;
}

void printarray(int a[], int n)
{
for(int i = 0; i < n ;i++)
cout << a[i] << " " ;
cout << endl;
}

void intersection(int a[], int n, int b[],int m,int c[], int &k)
{
int tf = 0,j = 0;
for(int i = 0; i < n; i++)
{
tf = judgement(b,m,a[i]);
if(tf)
c[j++] = a[i];
}
k = j;
}

void main()
{
int a[] = {2,6,3,5,7,1};
int b[] = {3,4,6,2,9,10,12};
int k;
int c[6];
intersection(a,6,b,7,c,k);
printarray(c,k);
}
/////////////////////////////////////////
#include <iostream>
using namespace std;

typedef struct Array
{
int *elem;
int length;
}Array;

int judgement(Array a,int x)
{
for(int i = 0; i < a.length; i++)
if(a.elem[i] == x)
{
cout << "Yes" << endl;
return 1;
}
cout << "No" << endl;
return 0;
}

void insertelem(Array &a,int x)
{
if(!judgement(a,x))
{
for(int i = 0;i < a.length; i++)
if(a.elem[i] > x)
break;
for(int j = a.length-1 ; j >= i; j--)
a.elem[j+1] = a.elem[j];
a.elem[i] = x;
}
a.length++;
}

void printarray(Array a)
{
for(int i = 0;i < a.length; i++)
cout << a.elem[i] << " ";
cout << endl;
}

void main()
{
Array b;
b.elem = new int [10];
b.length = 4;
for(int i = 0;i < b.length; i++)
b.elem[i] = i+1;
judgement(b,4);
insertelem(b,5);
printarray(b);
}
////////////////////
the third one 逻辑上有些问题,既然不在序列中,从哪删除?