数据结构2月19日-代码:

时间:2024-02-23 19:44:14

功能区:

 #include <stdio.h>
 #include <stdlib.h>
 #include "./d2191.h"
 
 SeqList* create_seqList()
 {
     SeqList* list = (SeqList*)malloc(sizeof(SeqList));
     if(NULL== list)
     {
         return NULL;
     }
     list->pos=0;//初始化要操作的位置为0
 
     return list;
 }
 
 void insert_seqList(SeqList* list,dataype num)
 {
     //判断顺序表是否为满
     if(list->pos >=N)
     {
         printf("顺序表为满,插入失败\n");
         return;
     }
 
     //在pos位置插入数据
     list->data[list->pos] = num;
                                                                                                                 
     //将pos++
     (list->pos)++;
     printf("插入成功\n");
     return;
 }
 
 void show_seqList(SeqList* list)
 {
     int i;
     for(i=0;i<=list->pos;i++)
     {
         printf("%d ",list->data[i]);
     }
     printf("\n");
 }
 
 dataype del_seqList(SeqList* list)
 {
     //判断顺序表是否为空
     if(list->pos > 0)
     {
         (list->pos)--;
         dataype num =list->data[list->pos];
         return num;
     }
 }
 
 //从下标插入数据
 void index_seqList(SeqList* list,int index,int temp)
 {
     int i ;
     if(index<=0||index>=N||list->pos >=N)
     {
         printf("要插入的下标错误或者超出");
         return;
     }
     for(i=list->pos;i>index;i--)
     {
         list->data[i]=list->data[i-1];
     }
 
     (list->pos)++;
 
     list->data[index]=temp;
 
     return;
 }
 
 //从下标删除数据
 dataype deletebyindex_seqList(SeqList* list,int index)
 {
     int i;
 
     if(index<=0||index>=N||list->pos >=N)
     {
         printf("要删除的下标错误或者超出");
         return 0;
     }
 
     int beifen=list->data[index];
     for(i=index;i<list->pos;i++)
     {
         list->data[i]=list->data[i+1];
     }
     (list->pos)--;
 
     return beifen;
 }
 
 //从下标修改数据
 void update_seqList(SeqList* list,int index,int newnum)
 {
     if(index<0||index>list->pos)
     {
         printf("非法输入\n");
         return;
     }
     list->data[index]=newnum;
     printf("修改成功\n");
 
     return;
 }
 
 //按下标查找数据
 dataype find_seqList(SeqList* list,int index)
 {
     if(index<0||index>list->pos)
     {
         printf("非法输入\n");
         return 0;
     }
 
     return list->data[index];
 
 }
 
 //按数据修改数据
 void updatebydata_seqList(SeqList* list,int oldnum,int newnum)
 {
     int i;
     for(i=0;i<list->pos;i++)
     {
         if(list->data[i]==oldnum)
         {
             list->data[i]=newnum;
         }
     }
     printf("更新完成\n");
     return ;
 }
 
 //按数据查找位置
 int selectbydata_seqList(SeqList* list,int num)
 {
     int i;
     for(i=0;i<list->pos;i++)
     {
         if(list->data[i]==num)
         {
             return i;
         }
     }

函数调用区:

include <stdio.h>
include "./d2191.h"
nt main(int argc, const char *argv[])

   //创建一个顺序表
   SeqList* list = create_seqList();

   //从尾部插入数据
   insert_seqList(list,10);
   insert_seqList(list,100);
   insert_seqList(list,1000);
   insert_seqList(list,10000);
   insert_seqList(list,10);

   //从尾部删除
   printf("%d\n", del_seqList(list));

   //从下标插入数据
   index_seqList(list,5,888);
   show_seqList(list);


   //从下标删除数据
   printf("%d\n",deletebyindex_seqList(list,3));
   show_seqList(list);                                        

   //从下标修改数据
   update_seqList( list,3,66);
   show_seqList(list);

   //按下标查找数据
   printf("查找的数据是%d\n",find_seqList(list,3));

   //按数据修改数据
   updatebydata_seqList(list,10,11);
   show_seqList(list);

   //按数据查找位置
   printf("该数字在第几个%d\n",selectbydata_seqList(list,66));

   return 0;

头文件区:

 #ifndef FUNC_C_
 #define FUNC_C_
 
 #define N 6//顺序表容量
 
 typedef int dataype;
 
 typedef struct
 {
     dataype data[N];//顺序表
     int pos;//记录要操作顺序表的位置
 }SeqList;
 
 SeqList* create_seqList();
 void insert_seqList(SeqList* list,dataype num);
 void show_seqList(SeqList* list);
 dataype del_seqList(SeqList* list) ;
 void index_seqList(SeqList* list,int index,int temp);
 dataype deletebyindex_seqList(SeqList* list,int index);
 void update_seqList(SeqList* list,int index,int newnum);
 dataype find_seqList(SeqList* list,int index);
 void updatebydata_seqList(SeqList* list,int oldnum,int newnum);
 int selectbydata_seqList(SeqList* list,int num);
 
 #endif