急求答案,高分悬赏!!微机原理课程设计:在数组中查找某个数,如果找到此数则把它从数组中删除。

在数组中查找某个数,如果找到此数则把它从数组中删除。
在数据段中有一个首地址为LIST的未经排序的字数组,在数组的第一个字中存放着该数组的长度,字变量KEY中存放着某个数。要求编写程序:在数组中查找该数,如果找到此数则把它从数组中删除。
参考思路:这一程序应该首先查找数组LIST中是否有元素KEY,如果没有则不对数组作任何处理就结束程序。如果找到这一元素则应把数组中位于其后(指地址比该元素高)的元素前移一个字(向低地址方向移动),并修改数组长度值。如果找到的元素正好位于数组末尾,则不必移动任何元素,只要修改数组长度值即可。

我以前的作业,给你了

#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);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-25
发现楼上有个2B C++ 语言 不懂还骂人
第2个回答  2011-09-20
就这破题值80分?你富二代啊。追问

你会不会啊,我舍得啊

追答

什么语言?