数据结构之顺序表

//没啥说的 挺简单

//2.2.1

#include<stdio.h>

#include<stdlib.h>

#include<malloc.h>

#define maxsize 100

typedef struct

{  int list[maxsize];  

int last;  int len;  

}seqlist;    

void init(seqlist *l)  

{  //l=(seqlist *)malloc(sizeif(seqlist) 动态内存分配 写了这句后  last ,len自动加一     

l->len=0; l->last=-1;  }      

 void creat(seqlist *l,int n) /*创建顺序表 */

{

int i;

int a[100];

for(i=0;i<n;i++)

{ l->list[i]=i;

l->len++;

}

}

 void empty(seqlist *l)

 {   if(l->len==0)  

 printf("表非空 ");  

 else   

printf("表为空 ");  }  

int length(seqlist *l)  

{   printf("length:%d",l->len);  

 return l->len;;  }    

int getelem(seqlist *l,int i,int data)  

{   if(l->len<i||i<1)  

{ printf("位置不合法");   

return -1;  

}   

else  

{  data=l->list[i-1];

  printf("第i位序号上的数字是%d",data);   

return 1;}    

 }  

 int locate(seqlist *l,int data)  

{  int i=0;    

for(i=0;i<l->len;i++)    

if(data==l->list[i])    

printf("已找到data对应的序号%d",i);  

return 1;    

printf("未找到序号");  

return 0;  }

 int insert(seqlist *l,int x,int i)

 {   int j;  

 if(l->len==maxsize)  

 {   printf("表已满");  

 return -1;  

}  

if(i>l->len||i<1)//

{    printf("位置不合法");    

     return -1;  

}  

for(j=l->len-1;j>=i-1;j--)

 {

  l->list[j+1]=l->list[j];

 }

 l->list[i-1]=x;

 l->last++;

 l->len++;  return 1;

 }

 int delet(seqlist *l,int i)  

{   int j;   

if(l->len==0)  

 { printf("表已空");      

return 0;  

}  

else if(i<1||i>l->len)  

{    printf("序号位置不对");   

return -1;  

}

 else  

{      for(j=i;j<l->len+1;j++)   

{ l->list[j-1]=l->list[j];/////////    

}     l->len--;    

return 1;  }  }

int main()/*[Error] expected initializer before 'seqlist'   错误类型是指seqlist前面有错误*/

{  int i,x;   

int a[100];

 seqlist *l;  

init(l);

 creat(l,5);  

printf(" ");  

 empty(l);  

 printf("依次输出表的值:");

 printf(" ");  

for(i=0;i<l->len;i++)

 { printf("%d ",l->list[i]);

 }  

printf(" ");  

locate(l,3);

 printf(" ");

 getelem(l,3,x);

 printf(" ");

 length(l);

 printf(" ");        

delet(l,2);    

for(i=0;i<l->len;i++)

 { printf("%d ",l->list[i]);

 }

return 0;

}

原文地址:https://www.cnblogs.com/mykonons/p/5847817.html