在linux环境下完成线性表的增删查改

       #include"SeqList.h"
        void SeqListInit(SeqList *seqlist)//对线性表的初始化
      {
        if(seqlist==NULL){
        return;
        }
        seqlist->size=0;
      }
       void SeqListPushBack(SeqList *seqlist,SeqListType value)//对线性表的尾插
      {
        if(seqlist==NULL)
        {
        return ;
        }
        if(seqlist->size>=SeqListMaxSize)
        {
        return ;
        }
        seqlist->data[seqlist->size]=value;
        ++seqlist->size;
        return;
      }
        void SeqListPopback(SeqList* seqlist)//对线性表的尾删
      {
         if(seqlist==NULL)
         {
           return;
         }
         if(seqlist->size==0)
         {
           return;
         }
         --seqlist->size;
         return;
 void SeqListInsert(SeqList*seqlist,size_t pos,SeqListType value)//对线性表指定位置的元素插入
         {
                if(seqlist==NULL)
                {
                        return;
                }
                if(seqlist->size>=SeqListMaxSize)
                {
                        return;
                }
                if(pos>seqlist->size)
                {
                        return;
                }
                if(pos==0)
                {
                        SeqListPushFront(seqlist,value);
                        return;
                }
                ++seqlist->size;
                size_t i=seqlist->size-1;
                for(;i-1>=pos;--i)
                {
                        seqlist->data[i]=seqlist->data[i-1];
                }
                seqlist->data[pos]=value;
        }

  void SeqListErase(SeqList*seqlist,size_t pos)//对线性表指定位置的元素删除
        {
                if(seqlist==NULL)
                {
                        return;
                }
                if(seqlist->size==0)
                {
                        return;
                }
                if(pos>=seqlist->size)
                {
                        return;
                }
                size_t i=pos;
                for(;i<seqlist->size-1;++i)
                {
                        seqlist->data[i]=seqlist->data[i+1];
                }
                --seqlist->size;
        }

 void SeqListPushFront(SeqList* seqlist,SeqListType value)//对线性表的头插
          {
                if(seqlist==NULL)
                {
                        return ;
                }
                if(seqlist->size>=SeqListMaxSize)
                {
                        return;
                }
                ++seqlist->size;
                size_t i=seqlist->size-1;
                for(;i>0;--i)
                {
                        seqlist->data[i]=seqlist->data[i-1];
                }
                seqlist->data[0]=value;
        }
        void SeqListPopFront(SeqList* seqlist)//对线性表的头删
         {
                if(seqlist==NULL)
                {
                        return;
                }
                if(seqlist->size==0)
                {
                        return;
                }
                size_t i=0;
                for(;i<seqlist->size-1;++i)
                {
                        seqlist->data[i]=seqlist->data[i+1];
                }
                --seqlist->size;
        }

以下为相应的测试代码

 #include<stdio.h>
      SeqlistPrintchar(SeqList *seqlist,const char* msg)
        {
           if(seqlist==NULL)
          {
          return ;
          }
          printf("[%s] \n",msg);
          size_t i=0;
          for(;i<seqlist->size;++i)
          {
          printf("[%c]  ",seqlist->data[i]);
          }
        }

      void SeqListtext()
        {SeqList seqlist;
         SeqListInit(&seqlist);
        printf("seqlist.size expect 0,actural %lu\n",seqlist.size);
        }
     void TextPushBack()
        {
        SeqList seqlist;
        SeqListInit(&seqlist);
        SeqListPushBack(&seqlist,'a');
        SeqListPushBack(&seqlist,'b');
        SeqListPushBack(&seqlist,'c');
        SeqListPushBack(&seqlist,'d');
        SeqlistPrintchar(&seqlist,"尾部插入四个元素:");
        }
 void TextPopback()
        {
         SeqList seqlist;
         SeqListInit(&seqlist);
         SeqListPopback(&seqlist);
         SeqlistPrintchar(&seqlist,"以下为对空顺序表进行尾删");
         SeqListPushBack(&seqlist,'a');
         SeqListPushBack(&seqlist,'b');
         SeqListPushBack(&seqlist,'c');
         SeqListPopback(&seqlist);
         SeqlistPrintchar(&seqlist,"以下为对数组进行尾删一个字符的结果");
        }
     void TextPushFront()
        {
         SeqList seqlist;
         SeqListInit(&seqlist);
         SeqListPushFront(&seqlist,'a');
         SeqListPushFront(&seqlist,'b');
         SeqListPushFront(&seqlist,'c');
         SeqListPushFront(&seqlist,'d');
         SeqlistPrintchar(&seqlist,"前插四个元素:");
        }
     void TextPopFront()
        {
         SeqList seqlist;
         SeqListInit(&seqlist);
         SeqListPopFront(&seqlist);
         SeqlistPrintchar(&seqlist,"以下为对空顺序表前删:");
         SeqListPushFront(&seqlist,'a');
         SeqListPushFront(&seqlist,'b');
         SeqListPushFront(&seqlist,'c');
         SeqListPushFront(&seqlist,'d');
         SeqListPopFront(&seqlist);
         SeqListPopFront(&seqlist);
         SeqlistPrintchar(&seqlist,"以下为头删两个元素");
        }
 void TextInsert()
        {
         SeqList seqlist;
         SeqListInit(&seqlist);
         SeqListPushBack(&seqlist,'a');
         SeqListPushBack(&seqlist,'b');
         SeqListPushBack(&seqlist,'c');
         SeqListPushBack(&seqlist,'d');
         SeqListInsert(&seqlist,3,'x');
         SeqlistPrintchar(&seqlist,"以下为对顺序表第三个位置插入元素x:");
        }
     void TextErase()
        {
         SeqList seqlist;
         SeqListInit(&seqlist);
         SeqListPushBack(&seqlist,'a');
         SeqListPushBack(&seqlist,'b');
         SeqListPushBack(&seqlist,'c');
         SeqListPushBack(&seqlist,'d');
         SeqListErase(&seqlist,3);
         SeqlistPrintchar(&seqlist,"删除第三个位置的元素:");
        }
     int main()
        {
         SeqListtext();
         TextPushBack();
         printf("\n");
         TextPopback();
         printf("\n");
         TextPushFront();
         printf("\n");
         TextPopFront();
         printf("\n");
         TextInsert();
         printf("\n");
         TextErase();
         return 0;
        }

                                

对头文件的引用

 #pragma once
        #include<stddef.h>
        #define SeqListMaxSize 100
        typedef  char SeqListType;
        typedef struct SeqList
        {
        SeqListType data[SeqListMaxSize];
        size_t size;
        }SeqList;
        void SeqListInit(SeqList *seqlist);
        void SeqListPushBack(SeqList* seqlist,SeqListType value);
        void SeqListPopback(SeqList* seqlist);
        void SeqListPushFront(SeqList* seqlist,SeqListType value);
        void SeqListPopFront(SeqList* seqlist);
        void SeqListInsert(SeqList*seqlist,size_t pos,SeqListType value);
        void SeqListErase(SeqList*seqlist,size_t pos);
                                                           



猜你喜欢

转载自blog.csdn.net/enjoymyselflzz/article/details/79631909