順序表的基本方法實現C語言版

。。天空之城。。發表於2020-06-13

順序表--------------線性表的第一個兒子

這個兒子的結構體定義:

typedef int  ElemType;//取別名

typedef struct link{
    ElemType * head;//head是一個陣列指標,不太清楚的同學,可以百度一下
    ElemType  length;
    ElemType  size;
}sqlink;//取別名

順序表的初始化:

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

#define MAX_SIZE 20

typedef int ElemType;

typedef struct link{
    ElemType * head;
    ElemType  length;
    ElemType  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;
    ElemType  length;
    ElemType  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;
    
}

剩下的過兩天再寫,如果有不懂的地方,可以留言!

 

相關文章