zoukankan      html  css  js  c++  java
  • 13.1.22: 线性表之顺序表

      1 /*
      2 1.此方法是看着数据结构李葆春自写的顺序表
      3 2.此方法Delete 还没限制i 范围。
      4 3.此定义只是用来测试用
      5 
      6 
      7 Levi.   
      8       date: 2013.1.21
      9 */
     10 #include <stdio.h>
     11 #define ElemType int
     12 #define MAX_LEN 20
     13 
     14 typedef struct {
     15     ElemType data[MAX_LEN];
     16     int len;
     17 }SqList;
     18 
     19 
     20 void Print(SqList L);
     21 void SetNull(SqList *L){
     22     (*L).len=0;
     23 }
     24 
     25 int Length(SqList L){
     26     return L.len;
     27 }
     28 
     29 ElemType GetElem(SqList L,int i){
     30     if(i<1||i>L.len)
     31               printf("i's value is error !");
     32     
     33     return L.data[i];
     34 }
     35 
     36 int Locate(SqList L,ElemType x){
     37     int i=1;
     38     if(i<1||i>L.len){
     39               printf("i value is not right !");
     40               return 0;
     41     }
     42     while(i<=L.len&&L.data[i]!=x)
     43               i++;
     44     if(i==L.len){
     45               printf("The x is not in SqList");
     46               return 0;
     47     }
     48     
     49     else
     50               return i;
     51 }
     52 
     53 int InsertNode(SqList *L,ElemType x,int i){
     54     int j;
     55     if(i<1||i>(*L).len){
     56               printf("Error\n");
     57               return 0;
     58     }
     59     for(j=(*L).len;j>=i;j--)
     60             (*L).data[j+1]=(*L).data[j];
     61     (*L).data[i]=x;
     62     ++(*L).len;
     63     Print(*L);
     64     return 0;
     65 
     66 }
     67 
     68 int DeleteNode(SqList *L,int i){
     69     int j;
     70     for(j=i+1;j<=(*L).len;j++)
     71               (*L).data[j-1]=(*L).data[j];
     72     --(*L).len;
     73 }
     74 
     75 void Print(SqList L){
     76     int i;
     77     for(i=1;i<=L.len;i++)
     78               printf("%d ",L.data[i]);
     79     printf("\n");
     80 }
     81 
     82 
     83 int main(){
     84     SqList L;
     85     scanf("%d",&L.len);
     86     printf("Len : %d\n",L.len);
     87     int i,value,pos;
     88     for(i=1;i<=L.len;i++){
     89               scanf("%d",&L.data[i]);
     90             
     91     }
     92     Print(L);
     93     
     94     scanf("%d %d",&pos,&value);
     95     InsertNode(&L,value,pos);
     96     printf("%d\n",Length(L));
     97 //    Print(L);
     98 //    scanf("%d",&pos);
     99 // DeleteNode(&L,pos);
    100 //    scanf("%d",&value);
    101 //    int dis=Locate(L,value);
    102 //    printf("%d",dis);
    103 
    104     scanf("%d",&pos);
    105     int dis = GetElem(L,pos);
    106     printf("%d\n",dis);
    107 //    Print(L);
    108     
    109     scanf("%*s");
    110     return 0;
    111 }
    /*
    1.此方法是参照严蔚敏的数据结构。
    2.用指针数组感觉很容易出错,所以以后还是避免用指针。
    
    
    
    Levi.
           date:13.01.22 
    */
    
    #include <stdio.h>
    #include <sys/malloc.h>
    #include <stdlib.h>
    #define MAX 200
    
    typedef struct SqList{
        int *elem;
        int len;
        int listsize;
    }SqList;
    
    void InitList(SqList *L){
        L->elem=(int *)malloc(MAX*sizeof(int));
        if(!L->elem)
                  printf("Error!");
        (*L).len=0;
        (*L).listsize=MAX;
        printf("list size = %d\n",(*L).listsize);
    }
    
    void DestroyList(SqList *L){
        free((*L).elem);
        (*L).elem=NULL;
        (*L).len=0;
        (*L).listsize =0;
    }
    
    void ClearList(SqList *L){
        (*L).len=0;
    }
    
    void GetElem(SqList L,int i,int *e){
        if(i<1||i>L.len)
                  printf("It is Wrong !");
        *e=*(L.elem+i-1);
    }
    
    int ListInsert(SqList *L,int i,int e){
        int *q,*p;
        q=(*L).elem+i-1;
        for(p=(*L).elem+(*L).len-1;p>=q;--p)
            *(p+1) = *p;
            *q=e;
            ++(*L).len;
        
        return 0;
    }
    
    int ListDelete(SqList *L,int i){
        int *p,*q;
        if(i<1||i>(*L).len)
                  return -1;
        p=(*L).elem+i-1;
        q=(*L).elem+(*L).len-1;
        for(++p;p<=q;++p)
                  *(p-1)=*p;
        (*L).len--;
        return 0;
    }
    void Print(SqList L){
        int *p=L.elem;
        int i;
        for(i=1;i<=L.len;i++){
            printf("%d ",*p++);
        }
        printf("\n");
    }
    
    int main(){
        int j,pos,value;
        SqList L;
        InitList(&L);
        scanf("%d",&(L.len));
        for(j=1;j<=L.len;j++)
                  scanf("%d",(L.elem+j-1));
        Print(L);    
        
        scanf("%d %d",&value,&pos);
        ListInsert(&L,pos+1,value);
        Print(L);
        scanf("%d",&pos);
        ListDelete(&L,pos+1);
        Print(L);
        scanf("%d",&pos);
        GetElem(L,pos,&value);
        printf("%d/n",value+1);
        return 0;
    }   
  • 相关阅读:
    231. Power of Two
    204. Count Primes
    205. Isomorphic Strings
    203. Remove Linked List Elements
    179. Largest Number
    922. Sort Array By Parity II
    350. Intersection of Two Arrays II
    242. Valid Anagram
    164. Maximum Gap
    147. Insertion Sort List
  • 原文地址:https://www.cnblogs.com/suiyun/p/2870657.html
Copyright © 2011-2022 走看看