欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

顺序算法

程序员文章站 2022-06-27 20:15:16
#include "stdio.h" #include "stdlib.h" #define MaxSize 100 typedef struct sqlist{ int data[MaxSize]; int length; }SqList; void CreateList(SqList *p,in ......
#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;
    }
}