顺序算法
#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; } }