|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
数据结构的题目
#include<stdio.h>
#include<malloc.h>
#define MAXLEN 100
typedef char DataType;
typedef struct
{
DataType data[MAXLEN];
int Length;
}SeqList;
void CreatSeqList(SeqList *L,DataType a[],int n)
{
int i;
L=(SeqList *)malloc(sizeof(SeqList));
for(i=0;i<n;i++)
L->data[i]=a[i];
L->Length=n;
}
void InitList(SeqList *L)
{
L=(SeqList *)malloc(sizeof(SeqList));
L->Length = 0;
}
void destroyList(SeqList *L)
{
free(L);
}
//位置查找
int GetElem(SeqList *L,int i,DataType *x)
{
if(i<1||i>L->Length)
return 0;
else
{
*x=L->data[i-1];
return 1;
}
}
//按值查找
int Locate(SeqList *L,DataType x)
{
int i=0;
while(i<L->Length && L->data[i]!=x)
i++;
if(i>=L->Length)
return 0;
else
return i+1;
}
//插入
int InsElem(SeqList *L,int i,DataType x)
{
int j;
if(L->Length>=MAXLEN)
{
printf("顺序表已满!");
return -1;
}
if(i<1||i>=L->Length+1)
{
printf("插入位置出错!");
return 0;
}
if(i==L->Length+1)
{
L->data[i-1]=x;
L->Length++;
return 1;
}
for(j=L->Length-1;j>=i-1;j--)
{
L->data[j+1]=L->data[j];
L->data[i-1]=x;
L->Length++;
return 1;
}
}
//删除
int DelElem(SeqList *L,int i,DataType *x)
{
int j;
if(L->Length>=0)
{
printf("顺序表为空!");
return -1;
}
if(i<1||i>=L->Length+1)
{
printf("不存在第i个元素!");
return 0;
}
*x=L->data[i-1];
for(j=i;j<L->Length;j++)
{
L->data[j-1]=L->data[j];
L->Length--;
return 1;
}
}
//输出
void DispList(SeqList *L)
{
int i;
for(i=0;i<L->Length;i++)
{
printf("%5c",L->data[i]);
}
}
int getLength(SeqList *L)
{
return(L->Length);
}
void main()
{
SeqList *L;
char a[5]={0};
DataType x;
printf("顺序表的基本运算如下:\n");
printf("初始化顺序表L\n");
InitList(L);
CreatSeqList(L,a,6);
printf("依次插入a,b,c,d,e元素\n");
InsElem(L,1,'a');
InsElem(L,2,'b');
InsElem(L,3,'c');
InsElem(L,4,'d');
InsElem(L,5,'e');
printf("输出顺序表L:");
DispList(L);
printf("输出顺序表L的长度:%d\n",getLength(L));
GetElem(L,3,&x);
printf("顺序表L的第3个元素:%c\n",x);
printf("元素a的位置:%d\n",Locate(L,'a')) ;
InsElem(L,4,'f');
DispList(L);
DelElem(L,3,&x);
DispList(L);
destroyList(L);
}
#include<stdio.h>
#include<malloc.h>
#define MAXLEN 100
typedef char DataType;
typedef struct
{
DataType data[MAXLEN];
int Length;
}SeqList;
void CreatSeqList(SeqList ** L,DataType a[],int n)
{
int i;
*L=(SeqList *)malloc(sizeof(SeqList));
for(i=0;i<n;i++)
(*L)->data[i]=a[i];
(*L)->Length=n;
}
void InitList(SeqList **L)
{
int cs=sizeof(SeqList);
*L=(SeqList *)malloc(cs);
(*L)->Length = 0;
}
void destroyList(SeqList **L)
{
free(*L);
}
//位置查找
int GetElem(SeqList **L,int i,DataType *x)
{
if(i<1||i>(*L)->Length)
return 0;
else
{
*x=(*L)->data[i-1];
return 1;
}
}
//按值查找
int Locate(SeqList **L,DataType x)
{
int i=0;
while(i<(*L)->Length && (*L)->data[i]!=x)
i++;
if(i>=(*L)->Length)
return 0;
else
return i+1;
}
//插入
int InsElem(SeqList**L,int i,DataType x)
{
if((*L)->Length>=MAXLEN)
{
printf("顺序表已满!");
return -1;
}
if(i<1||i>=(*L)->Length+1)
{
printf("插入位置出错!");
return 0;
}
if(i==(*L)->Length)
{
(*L)->data[i]=x;
(*L)->Length++;
return 1;
}
DataType tmp=0;
if (--i<(*L)->Length)
{
(*L)->Length++;
for (int j = i+1; j < (*L)->Length; j++)
{
tmp=(*L)->data[j];
(*L)->data[j]=(*L)->data[i];
(*L)->data[i]=tmp;
}
(*L)->data[i]=x;
}
return 1;
}
//删除
int DelElem(SeqList **L,int i,DataType *x)
{
int j;
if((*L)->Length==0)
{
printf("顺序表为空!");
return -1;
}
if(i<1||i>=(*L)->Length+1)
{
printf("不存在第i个元素!");
return 0;
}
*x=(*L)->data[i-1];
for(j=i;j<(*L)->Length;j++)
{
(*L)->data[j-1]=(*L)->data[j];
}
(*L)->Length--;
return 1;
}
//输出
void DispList(SeqList **L)
{
int i;
for(i=0;i<(*L)->Length;i++)
{
printf("%5c",(*L)->data[i]);
}
}
int getLength(SeqList **L)
{
return((*L)->Length);
}
void main()
{
SeqList *L=NULL;
char a[5]={49,50,51,52,53};
DataType x;
printf("顺序表的基本运算如下:\n");
printf("初始化顺序表L\n");
//InitList(L);
CreatSeqList(&L,a,5);
printf("依次插入a,b,c,d,e元素\n");
InsElem(&L,1,'a');
InsElem(&L,2,'b');
InsElem(&L,3,'c');
InsElem(&L,4,'d');
InsElem(&L,5,'e');
printf("输出顺序表L:");
DispList(&L);
printf("输出顺序表L的长度:%d\n",getLength(&L));
GetElem(&L,3,&x);
printf("顺序表L的第3个元素:%c\n",x);
printf("元素a的位置:%d\n",Locate(&L,'a')) ;
InsElem(&L,4,'f');
DispList(&L);
DelElem(&L,3,&x);
DispList(&L);
destroyList(&L);
getchar();
}
|
-
这是要求
-
|