顺序表

来源:互联网 发布:java解决中文乱码问题 编辑:程序博客网 时间:2024/04/26 11:30
 
 
 #include<stdio.h>
 #include<conio.h>
 #include<stdlib.h>
 #define List_init_size 50
 #define Listincrement 5
 
 struct SqList
    {
 
      int *elem;
      int length;
      int listsize;
    }
 
      InitSq(struct SqList *L)
     {    int i,e;
      L->elem=(int *)malloc(List_init_size*sizeof(int));
      if(!L->elem)
      printf("Overflow");
      else
      {
       L->length=0;
       L->listsize=List_init_size;
        printf("Init ok/n");
 
      }
 
     }
 
       creat(struct SqList *L,int e,int i)
     {
       int *p=&(L->elem[i]);
       *p=e;
 
 
       L->length++;
      }
 
 
 
    void ListInsert_Sq(struct SqList *L,int i)
      {
           int e;
           struct SqList *newbase;
           int *q, *p;
           printf("Enter the inserted number e=");
           scanf("%d",&e);
           if(i<1)
           printf("error");
           else
 
             if(i>=L->length)
             {
             L->elem[L->length]=e;
                L->length++;
             }
             else
 
              if(L->length>=L->listsize)
 
                      newbase=(int *)realloc(>elem,(L>listsize+Listincrement)*sizeof(int));
                       if(!newbase){
                       printf("Overflow");}
 
 
                     L->elem=newbase;
                     L->listsize+=Listincrement;                     
{ q=&(L->elem[i-1]);
                     for(p=&(L->elem[L->length-1]);p>=q;p--)
                        *(p+1)=*p;
                        *q=e;
                        L->length++;
                     
                    }
 
             }
 
 
 
   void Listdelete(struct SqList *L)
           {
              int i,e;
                int *p,*q;
                printf("/nEnter the deleted locator i=");
              scanf("%d",&i);
              if((i<1)||(i>L->length))
                printf("Wrong Locator");
                else
                  {
                     p=&(L->elem[i-1]);
                     e=*p;
                     q=L->elem+L->length-1;
                     for(p++;p<=q;p++)
                     *(p-1)=*p;
                     L->length--;
                     printf("Output the delete number e=%d/n",e);
 
                   }
            }
 
 
 void print(struct SqList *L)
       {
           int i,*q;
           printf("/nOutput the List/n");
             for(i=0;i<L->length;i++)
            { q=&(L->elem[i]);
              printf("%d ",*q);
             }
       }
 
 
 
 
   main()
       {
           int e,i=0;
           struct SqList L;
           clrscr();
           InitSq(&L);
           printf("Please Enter numbers for the list and end by 0/nf");
             do
             {
                scanf("%d",&e);
                creat(&L,e,i);
                i++;
              }
 
              while(e);
              Listdelete(&L);
              print(&L);
           printf("/nplease enter the inserted location i=");
          scanf("%d",&e);
           ListInsert_Sq(&L,e);
           print(&L);
      
原创粉丝点击