顺序算法

0
8
#include "stdio.h"
#include "stdlib.h"
#define MaxSize 100

typedef struct sqlist{
    int data[MaxSize];
    int length;
    }SqList;

void CreateList(SqList *p,int data[],int n);
int  ListInsert(SqList *p,int i ,int e); 
void ShowList(SqList *p,int n);

void main(){
    SqList*L;
int data[6]={34,178,2,88,76,10},n,j;
//顺序表初始化 
L=(SqList *)malloc(sizeof(SqList));
if(!L)
    printf("内存分配失败");
else
    L->length=0;
CreateList(L,data,6);
ShowList(L,6); 

// 插入元素 
printf("请输入插入值的位置和数值(逗号分隔):");
scanf("%d,%d",&j,&n);
n=ListInsert(L,j,n);
if(n==-1)
   printf("插入位置有问题!\n");
else
   ShowList(L,n);

//删除元素 
printf("请输入删除的位置:");
scanf("%d",&j);
n=ListDelete(L,j);
if(n==-1)
   printf("删除失败!\n");
else
   printf("删除的元素为:%d\n",n);
ShowList(L,L->length);

//释放空间 
free(L);
}

//创建 
void CreateList(SqList *p,int data[],int n){
    int i;
    for(i=0;i<n;i++)
    p->data[i]=data[i];
    p->length=n;
} 
 
//插入 
int  ListInsert(SqList *p,int i ,int e){
int j;
if(i<1|| i>p->length+1)
return -1;
i--;//形象i是逻辑位序 
for(j=p->length ; j>i ; j--)
p->data[j]=p->data[j-1];
p->data[i]=e;
p->length++;
return p->length;
} 
 
//显示 
void ShowList(SqList *p,int n){
    int j;
    for(j=0;j<n;j++)
    printf("%d",p->data[j]);
    printf("\t顺序表长度为:%d\n",p->length);
}

//删除
int ListDelete(SqList *L,int i){
    int k;int x;
    if(L->length==0)
    {
       printf("此表为空表,无法删除!");
       return -1;    
    }
    else if(i<i || i>L->length) 
    {
       printf("删除的位置有误!");
       return -1;    
    }
    else{
        x=L->data[i-1];
        for(k=i;k<L->length;k++)
        L->data[k-1]=L->data[k];
        L->length--;
        return x;
    }
} 

<

发布回复

请输入评论!
请输入你的名字