题目略
教材:数据结构(林碧英版)
算法设计题1-5
1.
typedef struct
{
ElemType data[max];
int length;
}SqList;
bool DelSame(SqList &L)
{
if(L.length==0)
return false;
int i,j;
for(i=0,j=1;j<L.length;j++)
if(L.data[i]!=L.data[j])
L.data[++i]=L.data[j];
L.length=i+1;
return true;
}
2.
typedef struct
{
ElemType data[Max];
int length;
}SqList;
bool Del_x_y(SqList &L,ElemType x,ElemType y)
{
int i,k=0;
if(L.length==0||x>=y)
return false;
for(i=0;i<L.length;i++)
{
if(L.data[i]>=x&&L.data[i]<=y)
k++;
else
L.data[i-k]=L.data[i];
}
L.length-=k;
return true;
}
3.
#include <iostream>
#include<cstdlib>
using namespace std;
#define n 10
void count(int &c,int &d,int &o,char R[])
{
for(int i=0;i<n;i++)
{
if((R[i]>='A'&&R[i]<='Z')||(R[i]>='a'&&R[i]<='z'))
c++;
else if(R[i]>='0'&&R[i]<='9')
d++;
else
o++;
}
}
int main()
{
char R[n];
for(int i=0;i<n;i++)
cin>>R[i];
int c=0,d=0,o=0;
count(c,d,o,R);
for(int i=0,j=0;j<c||i<n;i++)
{
if((R[i]>='A'&&R[i]<='Z')||(R[i]>='a'&&R[i]<='z'))
{
swap(R[i],R[j]);
j++;
}
}
for(int i=0,j=c;j<d||i<n;i++)
{
if(R[i]>='0'&&R[i]<='9')
{
swap(R[i],R[j]);
j++;
}
}
for(int i=0;i<n;i++)
cout<<R[i]<<' ';
return 0;
}
4.
typedef int DataType;
void Reverse(DataType A[],int low,int high,int maxsize)
{
if(low>=high||high>=maxsize)
return;
int mid=(low+high)/2;
for(int i=0;i<=mid-low;i++)
swap(A[low+i],A[high-i]);
}
void Exchange(Data A[],int m,int n,int maxsize)
{
Reverse(A,0,m+n-1,maxsize);
Reverse(A,0,n-1,maxsize);
Reverse(A,n,m+n-1,maxsize);
}
//将整个表逆置,再分别逆置两个子表
5.
//链式存储
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
LinkList Reverse(LinkList L)
{
LNode *q,*p=L->next,*r=p->next;
p->next=NULL;//第一个结点
while(r!=NULL)
{
q=p;
p=r;
r=r->next;
p->next=q;
}
L->next=p;
return L;
}
//顺序存储
typedef struct
{
ElemType data[MaxSize];
int length;
}SqList;
void Reverse(SqList &L)
{
ElemType t;
for(i=0;i<L.length/2;i++)
{
t=L.data[i];
L.data[i]=L.data[L.length-i+1];
L.data[L.length-i+1]=t;
}
}