|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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();
- }
复制代码
|
-
这是要求
-
|