我以前的作业,给你了
#include <stdio.h>
#include <iostream.h>
#define MAXSIZE 50
typedef int ElemType;
typedef struct node
{
ElemType data[MAXSIZE];
int length;
}SqList;
//初始化线性运算
void InitList(SqList &L)
{
L.length=0;
}
void InitList1(SqList *L)
{
L->length=0;
}
//2.求线性表长度运算
int GetLength(SqList L)
{
return L.length;
}
//3.求线性表中的第i个元素运算 i是逻辑序号,从1开始
int GetElem(SqList L,int i,ElemType &e)
{
if(i<1 || i>L.length)
return 0;
else
{
e=L.data[i-1];
return 1;
}
}
//4.按值查找运算
int Locate(SqList L,ElemType x)
{
int i=0;
while (L.data[i]!=x)
i++;
if(i>L.length)
return(0);
else
return(i+1);
}
//5.插入元素运算
int InsElem(SqList &L,ElemType x,int i)
{
int j;
if(i<1 || i>L.length+1)
return 0;
for(j=L.length;j>=i;j--)
L.data[j]=L.data[j-1];
L.data[i-1]=x;
L.length++;
return 1;
}
//6.删除元素运算
int DelElem(SqList &L,int i)
{
int j;
if (i<1 || i>L.length)
return 0;
for (j=i;j<L.length;j++)
L.data[j-1]=L.data[j];
L.length--;
return 1;
}
//7.输出线性表运算
void DispList(SqList L)
{
int i;
for (i=1;i<=L.length;i++)
printf("%c ",L.data[i-1]);
printf("\n");
}
void common(SqList A,SqList B,SqList &C)
{
int i,j;
C.length=0;
for (i=0;i<A.length;i++)
{
j=0;
while (j<B.length && A.data[i]!=B.data[j])
j++;
if (j<B.length)
{
C.data[C.length]=A.data[i];
C.length++;
}
}
}
void merge(SqList A,SqList B,SqList &C)
{
int i=0,j=0,k=0;
while (i<A.length && j<B.length)
{
if (A.data[i]<B.data[j])
{
C.data[k]=A.data[i];
i++;
k++;
}
else if (A.data[i]>B.data[j])
{
C.data[k]=B.data[j];
j++;
k++;
}
else
{
C.data[k]=A.data[i];
i++;
k++;
C.data[k]=B.data[j];
j++;
k++;
}
}
while (i<A.length)
{
C.data[k]=A.data[i];
i++; k++;
}
while (j<B.length)
{
C.data[k]=B.data[j];
j++;
k++;
}
C.length=k;
}
void jose(int n,int m)
{
int mon[MAXSIZE];
int i,d,count;
for(i=0;i<n;i++)
mon[i]=i+1;
for(i=0;i<n;i++)
cout << mon[i] << " ";
cout << endl;
count = 0;
i = -1;
while(count < n)
{
d=0;
while(d<m)
{
i = (i+1)%n;
if(mon[i]!=0)
d++;
}
cout << mon[i];
mon[i] = 0;
count++;
}
cout << endl;
}
void main()
{/*
int i;
ElemType e;
SqList L;
InitList(L);
InsElem(L,'a',1);
InsElem(L,'B',2);
InsElem(L,'C',3);
InsElem(L,'D',1);
InsElem(L,'E',2);
InsElem(L,'F',3);
printf("线性表:");DispList(L);
printf("长度:%d\n",GetLength(L));
i=3;
GetElem(L,i,e);
printf("第%d个元素:%c\n",i,e);
e='a';
printf("元素%c是第%d个元素\n",e,Locate(L,e));
i=4;printf("删除第%d个元素\n",i);
DelElem(L,i);
printf("线性表:");DispList(L);
*/
// 以上代码是书上的程序,下面的为了调用common和merge函数而编写的代码。
SqList M,N,K;
InitList(M);
InitList(N);
InsElem(M,'a',1);
InsElem(M,'b',2);
InsElem(M,'c',3);
InsElem(M,'d',4);
InsElem(M,'e',5);
InsElem(M,'f',6);
InsElem(M,'g',7);
InsElem(M,'h',8);
InsElem(M,'i',9);
InsElem(N,'a',1);
InsElem(N,'a',2);
InsElem(N,'i',3);
InsElem(N,'m',4);
InsElem(N,'s',5);
InsElem(N,'z',6);
common(M,N,K); // M和N的共同元素放入K中,为了便于下面调用,M,N中的分别存放的是有序的。
DispList(M);
DispList(N);
DispList(K);
cout<<"THE LENGTH OF M is:"<<M.length<<endl;
cout<<"THE LENGTH OF N is:"<<N.length<<endl;
cout<<"THE LENGTH OF K is:"<<K.length<<endl;
InitList(K);
merge(M,N,K); //M,N合并后仍然有序,放入K中
DispList(K);
cout<<"AFTER MERGER,THE LENGTH OF K is:"<<K.length<<endl;
jose(7,3);
}
温馨提示:答案为网友推荐,仅供参考