顺序表的基本方法实现C语言版

顺序表--------------线性表的第一个儿子

这个儿子的结构体定义:

typedef int  ElemType;//取别名

typedef struct link{
    ElemType * head;//head是一个数组指针,不太清楚的同学,可以百度一下
    int  length;
    int  size;
}sqlink;//取别名

顺序表的初始化:

#include<stdio.h>
#include<stdlib.h>

#define MAX_SIZE 20

typedef int ElemType;

typedef struct link{
    ElemType * head;
    int length;
    int size;
}sqlink;

sqlink InitLink();//方法声明
int main(){
    sqlink s;
    s = InitLink();
    for(int i = 0; i < 10; i++){
        s.head[i] = i;
    }
    printf("%d",s.head[6]);
}

sqlink InitLink(){//方法实现
      sqlink s;
      s.head = (ElemType*)malloc(MAX_SIZE*sizeof(ElemType));//在内存中动态创建
      if(!s.head)//如果创建不成功,就退出
      exit(0);
      s.length = 0;
      s.size = MAX_SIZE;
      return  s;          
}

顺序表的插入:

#include<stdio.h>
#include<stdlib.h>

#define MAX_SIZE 20

typedef int ElemType;

typedef struct link{
    ElemType * head;
    int length;
    int size;
}sqlink;

sqlink InitLink();//方法声明
sqlink InsertLink(sqlink s ,int i , ElemType e);
int main(){
    sqlink s;
    s = InitLink();
    for(int i = 0; i < 10; i++){
        s.head[i] = i;
    }
    printf("%d\n",s.head[6]);
    s = InsertLink(s,7,99999);
    printf("%d\n",s.head[6]);
    printf("%d\n",s.head[7]);
}

sqlink InitLink(){//方法实现
      sqlink s;
      s.head = (ElemType*)malloc(MAX_SIZE*sizeof(ElemType));
      if(!s.head)
      exit(0);
      s.length = 0;
      s.size = MAX_SIZE;
      return  s;          
}    
sqlink InsertLink(sqlink s ,int i , ElemType e){
    if(i<1 && i>MAX_SIZE+1)
        exit(0);
    if(s.length == MAX_SIZE)
        exit(0); 
    for(int j = s.length-1;j >= i-1;j--){
        s.head[j+1] = s.head[j] ;
    }
    s.head[i-1] = e;
    return s;
    
}

剩下的过两天再写,如果有不懂的地方,可以留言!

相关推荐