考研数据结构:C语言代码实现之线性表(顺序表)

  • 头文件
#include
#include
#define Maxsize 100

  • 结构体类型及定义
typedef struct{
 int data[Maxsize];
 int length;
}SqList;
  • 顺序表创建
 SqList* initlist(){
  SqList *l;
  l=(SqList*)malloc(sizeof(SqList));
  l->length=0;
  return l;
 }
  • 顺序表按位置插入
 int listinsert(SqList *L,int i,int e){
  if(i<1||i>L->length+1)
  return 0;
  if(L->length>=Maxsize)
  return 0;
  int j;
  for(j=L->length;j>=i;j--) 
  L->data[j]=L->data[j-1];
  L->data[i-1]=e;
  L->length++;
 return 1;
 }
  • 顺序表按位置删除
int listdelete(SqList *L,int i,int *e){
  if(i<1||i>L->length)
   return 0;
  if(L->length<1)
   return 0;
  *e=L->data[i-1];
  int j;
  for(j=i;jlength;j++)
  L->data[j-1]=L->data[j];
  L->length--;
  printf("这次删除的数据是:%d\n",*e);
  return 1;
 }
  • 输出顺序表
void printlist(SqList *L){
  int i,k;
  for(i=0;i<=L->length-1;i++){
   k=L->data[i];
   printf("%d",k);
  }
 } 
  • 按值查找顺序表元素
int findx(SqList *L,int x,int *e){
  int i=0;
  while(ilength+1&&L->data[i]!=x)
  i++;
  if(i>L->length){
   printf("we can not find this number!\n");
  return 0;
  }
  *e=i+1;
  printf("数据%d的位置在%d\n",x,*e);
  return 1;
 }
  • 测试代码
void main(){
  SqList *L;
  int k;
  L=initlist();
  listinsert(L,1,1);
  printlist(L);
  printf("\n");
  listinsert(L,1,2);
  printlist(L);
  printf("\n");
  listinsert(L,1,3);
  printlist(L);
  printf("\n");
  listinsert(L,1,4);
  printlist(L);
  printf("\n");
  listinsert(L,1,5);
  printlist(L);
  printf("\n");
  listdelete(L,3,&k);
  printlist(L);
  printf("这次删除的数据是:%d\n",k);
  findx(L,4,&k);
  printf("数据位置在:%d\n",k);
  findx(L,3,&k);
  
 }

(第一次写博客,主要是记录自己学习数据结构当中写好的一些c代码,以便查看,大家可以参考讨论…不足之处请指出)

你可能感兴趣的:(考研数据结构)