顺序算法
程序员文章站
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; } }