
主程序
#include "fun.h"
int main(int argc, const char *argv[])
 {
     seq_p S=create_seq();
     stu data;
     printf("请问要输入几个学生的数据:");
     int n;
     scanf("%d",&n);
     while(n--)
     {
         printf("姓名:\n");
        scanf("%s",data.name);
         printf("学号:\n");
        scanf("%d",&data.id);
         printf("成绩:\n");
        scanf("%d",&data.score);
        insert_tail(S,data);
    }
     show_seq(S);
     printf("###################任意插入\n");
     stu data2={"张三",22,99};
     insert_loc(S,2,data2);//任意插入
     show_seq(S);
     del_loc(S,1);//任意删除
     printf("###################删除\n");
     show_seq(S);
     stu data3={"李四",35,100};
     chag_loc(S,3,data3);//修改
     printf("###################修改\n");
     show_seq(S);
     printf("###################查找\n");
     find_id(S,3);//id查找
     printf("###################去重\n");
     seq_rm(S);//q去重
     show_seq(S);
     printf("###################销毁\n");
     free_seq(&S);//销毁
     show_seq(S);
    
     return 0;
 }
源码
#include "fun.h"
//顺序表的创建
 seq_p create_seq()
 {
     seq_p S=(seq_p)malloc(sizeof(seq));
     if(S==NULL)
     {
         printf("顺序表创建失败\n");
         return NULL;
     }
     S->len=0;
     return S;
 }
//判满
 int full_seq(seq_p S)
 {
     if(S==NULL)
     {
         printf("入参为空,请检查\n");
         return -1;
     }
     return S->len==MAX;
 }
 //判空
 int empty_seq(seq_p S)
 {
     if(S==NULL)
     {
         printf("入参为空,请检查\n");
         return -1;
     }
     return S->len ==0;
 }
 //尾插
 void insert_tail(seq_p S,stu data)
 {
     if(S==NULL)
     {
         printf("入参为空,请检查\n");
         return;
     }
     if(full_seq(S))
     {
         printf("表已满,无需插入\n");
         return ;
     }
     S->data[S->len].id=data.id;
     S->data[S->len].score=data.score;
     strcpy(S->data[S->len].name,data.name);
     S->len++;
}
 //输出表
 void show_seq(seq_p S)
 {
     if(S==NULL)
     {
         printf("入参为空,请检查\n");
         return;
     }
     if(empty_seq(S))
     {
         printf("表已满,无需插入\n");
         return ;
     }
     int i=0;
     while(1)
     {
         printf("姓名:%-4s学号:%-4d成绩:%-4d\n",S->data[i].name,S->data[i].id,S->data[i].score);
         if(++i==S->len)return;
     }
 }
 //任意位置插入学生
 void insert_loc(seq_p S,int n,stu data)
 {
     if(S==NULL)
     {
         printf("入参为空,请检查\n");
         return;
     }
     if(full_seq(S))
     {
         printf("表已满,无需插入\n");
         return ;
     }
     if(n<0||n>S->len)
     {
         return;
     }
     for(int i=S->len;i>n-1;i--)
     {
         strcpy(S->data[i].name,S->data[i-1].name);
         S->data[i].id=S->data[i-1].id;
         S->data[i].score=S->data[i-1].score;
     }
         strcpy(S->data[n-1].name,data.name);
         S->data[n-1].id=data.id;
         S->data[n-1].score=data.score;
         S->len++;
 }
 //任意位置删除
 void  del_loc(seq_p S,int n)
 {
     if(S==NULL)
     {
         printf("入参为空,请检查\n");
         return;
     }
     if(empty_seq(S))
     {
         printf("表已空,无需删除\n");
         return ;
     }
     if(n<0||n>S->len)
     {
         return;
     }
     for(int i=n-1;i<S->len;i++)
     {
         strcpy(S->data[i].name,S->data[i+1].name);
         S->data[i].id=S->data[i+1].id;
         S->data[i].score=S->data[i+1].score;
     }
         
         S->len--;
 }
 //按位置修改
 void  chag_loc(seq_p S,int n,stu data)
 {
     if(S==NULL)
     {
         printf("入参为空,请检查\n");
         return;
     }
     if(empty_seq(S))
     {
         printf("表已空,无需插入\n");
         return ;
     }
     if(n<0||n>S->len)
     {
         return;
     }
     int flag=0;
     for(int i=0;i<S->len;i++)
     {
         if(i==n-1)
         {   flag=1;
             strcpy(S->data[i].name,data.name);
             S->data[i].id=data.id;
             S->data[i].score=data.score;
         }
     }
     if(flag==0)
     {
         printf("修改失败\n");
    }
         
 }
 //按学号查找
 void  find_id(seq_p S,int id)
 {
     if(S==NULL)
     {
         printf("入参为空,请检查\n");
         return;
     }
     if(empty_seq(S))
     {
         printf("表已空,无需查找\n");
         return ;
     }
     int flag=0;
     for(int i=0;i<S->len;i++)
     {
         if(S->data[i].id==id)
         { 
             flag=1;
             printf("姓名:%-4s学号:%-4d成绩:%-4d\n",S->data[i].name,S->data[i].id,S->data[i].score);
        }
     }
     if(flag==0)
     {
         printf("查无此人\n");
    }
         
 }
 //去重
 void  seq_rm(seq_p S)
 {
     if(S==NULL)
     {
         printf("入参为空,请检查\n");
         return;
     }
     if(empty_seq(S))
     {
         printf("表已空,无需去重\n");
         return ;
     }
     
     for(int i=0;i<S->len;i++)
     {
         for(int j=i+1;j<S->len;j++)
         {
             if(S->data[i].name==S->data[j].name||S->data[i].id==S->data[j].id||S->data[i].score==S->data[j].score)
             {
                 del_loc(S,j+1);
                 j--;
             }
        }
     }
        
 }
 //销毁
 void free_seq(seq_p *S)
 {
     if(*S==NULL)
     {
         printf("入参为空,请检查\n");
         return;
     }
     free(*S);
     *S=NULL;
 }
头文件
#ifndef __FUN_H__
 #define __FUN_H__
 #include  <myhead.h>
#define MAX 30
typedef struct student
 {
     char name[30];
     int id;
     int score;
 }stu;
typedef struct sequece
 {
     stu data[MAX];
     int len;
 }seq,*seq_p;
seq_p create_seq();
 int full_seq(seq_p);
 int empty_seq(seq_p);
 void insert_tail(seq_p S,stu data);
 void show_seq(seq_p S);
 void insert_loc(seq_p S,int n,stu data);
 void  del_loc(seq_p S,int n);
 void  chag_loc(seq_p S,int n,stu data);
 void  find_id(seq_p S,int id);
 void   seq_rm(seq_p S);
 void  free_seq(seq_p *S);
 #endif