顺序表__C语言

  1 /*
  2     Name: 线性表的操作(C语言) 
  3     Copyright: 高勇 
  4     Author: gaoyong 
  5     Date: 30/03/14 20:21
  6     Description: 线性表的基本操作。 
  7 */
  8 
  9 #include<stdio.h>
 10 #define Maxsize 100
 11 #define ERROR 0
 12 typedef int DataType;
 13 typedef struct{
 14     DataType data[Maxsize];
 15     int length;
 16 }SqlList;
 17 
 18 void create_list(SqlList *list,int n)
 19 {
 20     if(n<1)
 21     {
 22         printf("不可创建空表!\n"); 
 23     } 
 24     for(int i=1;i<=n;i++)
 25     {
 26         scanf("%d",list->data+i);
 27     }
 28     list->length=n;
 29 }
 30 
 31 int length_list(SqlList *list)
 32 {
 33     return list->length;
 34 }
 35 
 36 bool empty_list(SqlList *list)
 37 {
 38     if(list->length==0)
 39     {
 40         return true;
 41     }else
 42     {
 43         return false;
 44     }
 45 }
 46 
 47 void clear_list(SqlList *list)
 48 {
 49     list->length=0;
 50 }
 51 
 52 DataType get_list(SqlList *list,int n)
 53 {
 54     return list->data[n];
 55 }
 56 
 57 int locate_list(SqlList *list,DataType x)
 58 {
 59      for(int i=1;i<=list->length;i++)
 60     {
 61         if(list->data[i]==x)
 62         {
 63             return i;
 64         }
 65     }
 66         return ERROR;
 67 }
 68 
 69 void insert_list(SqlList *list,DataType data_to_insert,int index)
 70 {
 71     if(index<=0)
 72     {
 73         printf("插入位置非法,不可插入!\n");
 74     
 75     }
 76     else if(index>list->length+1)
 77     {
 78         printf("插入位置越过线性表边界!\n");
 79             
 80     }else
 81     {
 82         for(int i=list->length;i>=index;i--)
 83         {
 84             list->data[i+1]=list->data[i];
 85         }
 86         list->data[index]=data_to_insert;
 87         printf("线性表插入成功!\n");
 88     }
 89 }
 90 void delete_list(SqlList *list,int n)
 91 {
 92     if(n<=0)
 93     {
 94         printf("删除位置非法!\n");
 95     }else if(n>list->length)
 96     {
 97         printf("删除位置超越线性表边界!\n");
 98     }else
 99     {
100         for(int i=n;n<list->length;i++)
101         {
102             list->data[i]=list->data[i+1];
103         }
104         list->length--;
105         printf("删除成功!\n");
106     } 
107 }
108 void print_list(SqlList *list)
109 {
110     if(empty_list(list))
111     {
112         printf("线性表的长度为0 \n");
113     }else
114     {
115         for(int i =1;i<=list->length;i++)
116         {
117             printf("线性表的第%d个元素是%d \n",i,list->data[i]);
118         }
119     } 
120     
121 } 
122 int main()
123 {
124     int length=0;
125     SqlList *list;
126     create_list(list,3);
127     /*
128     length=length_list(list);
129     bool is_empty=empty_list(list);
130     if(is_empty)
131     {
132         printf("该线性表为空!");
133     }else
134     {
135         printf("该线性表的长度为%d\n",length_list(list)); 
136     }
137      DataType x=5;
138      int location=locate_list(list,x);
139      if(location==ERROR)
140      {
141          printf("未找到该元素/n");
142      }else
143      {
144          printf("该元素%d在线性表中存在,位置为%d/n",x,location); 
145      } 
146     */
147     insert_list(list,25,2);
148     print_list(list);
149     return 0;
150 } 

 

posted on 2014-03-30 21:36  高勇  阅读(176)  评论(0)    收藏  举报

导航