数据结构c代码1:顺序表

下面是用c代码对顺序表的操作:

  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 
  4 #define MAXSIZE 25  //顺序表最大长度 
  5 
  6 /*定义顺序表*/ 
  7 typedef struct
  8 {
  9     int data[MAXSIZE];
 10     int len;
 11 }SeqList;
 12 
 13 /*初始化顺序表*/
 14 
 15 void InitList(SeqList *L)
 16 {
 17     L->len = 0;
 18 } 
 19 
 20 /*建立顺序表*/
 21 int CreatList(SeqList *L, int a[], int n)
 22 {
 23     if(n > MAXSIZE)
 24     {
 25         printf("空间不够,无法建立顺序表!");
 26         return 0; 
 27     }
 28     
 29     for(int i=0; i<n; i++){
 30         L->data[i] = a[i];
 31     }
 32     L->len = n;
 33     return 1;
 34 } 
 35 
 36 /*遍历操作*/
 37 void PrintList(SeqList *L)
 38 {
 39     for(int i=0;i<L->len;i++){
 40         printf("%d ",(L->data[i]));
 41     }
 42 }
 43 
 44 /*判空操作*/
 45 int  IsEmpty(SeqList *L)
 46 {
 47     if(L->len == 0){
 48         return 1;
 49     }
 50     else
 51         return 0;
 52 }
 53 
 54 /*求顺序表长度*/
 55 int GetLength(SeqList *L)
 56 {
 57     return L->len; 
 58 }
 59 
 60 /*按值查找*/
 61 int Locate(SeqList *L, int x)
 62 {
 63     int i ; 
 64     for( i=0;i<L->len;i++)
 65     {
 66         if(L->data[i] == x)
 67         {
 68             return (i+1);   //找到该数,并将其下标返回 
 69         }
 70     }
 71     
 72     if(i == L->len){
 73         return 0;  //代表没有找到 
 74     }
 75 }
 76 
 77 /*按位查找*/
 78 int Get(SeqList *L, int x, int *ptr)
 79 {
 80      //若查找成功,则通过指针参数ptr返回值
 81      if(x < 1 || x > L->len)
 82      {
 83          printf("查找位置非法,查找错误!!\n");
 84          return 0;
 85      }
 86      else
 87      {
 88          *ptr = L->data[x];
 89          return 1;
 90      }
 91 }
 92 
 93 /*插入操作*/
 94 int Insert(SeqList *L, int i, int x)
 95 {
 96     if(L->len > MAXSIZE)
 97     {
 98         printf("上溢错误!!");
 99         return 0 ; 
100     }
101     
102     if(i<1 || i>L->len)
103     {
104         printf("插入位置错误!!!");
105         return 0;
106     }
107     
108     for(int k=L->len;k>i;k--){
109         L->data[k]=L->data[k-1];
110     }
111     L->data[i] = x;
112     L->len++;
113     return 1;
114     
115 }
116 /*删除操作*/
117 int Delet(SeqList *L, int i, int *ptr)
118 {
119     if(L->len == 0)
120     {
121         printf("该顺序表为空!!");
122         return 0;
123     }
124     if(i < 1 || i > L->len)
125     {
126         printf("删除位置错误!");
127         return 0;
128     }
129     *ptr = L->data[i-1];
130     for(int k=i;k<L->len;k++){
131         L->data[k-1] = L->data[k];
132     }
133     L->len--;
134     return 1;
135 }
136 
137 /*修改操作*/
138 int Modify(SeqList *L, int i, int x)
139 {
140     if(i < 1 || i > L->len)
141     {
142         printf("位置错误!");
143         return 0;
144     }
145     L->data[i-1] = x;
146     return 1;
147 } 
148 
149 int main()
150 {
151     int x;
152     int a[5] = {5, 15, 25, 35, 45};
153     SeqList list;
154     InitList(&list);   //初始化顺序表
155     if(IsEmpty(&list))
156     {
157          printf("初始化顺序表成功!\n");
158     }
159     printf("给表赋值:5,15,25,35,45\n遍历并输出顺序表:\n");
160     CreatList(&list, a, 5);   //建立一个长度为5的顺序表 
161     PrintList(&list);    //遍历顺序表 
162     
163     printf("\n在第五位后插入一个500:\n");
164     Insert(&list, 5, 500);
165     PrintList(&list);
166     
167     if(Modify(&list, 3, 250) == 1)
168     {
169         printf("\n把第三位改成250\n");
170         PrintList(&list);
171     }    
172     
173     if(Delet(&list, 6, &x))
174     {
175         printf("\n把倒数第一位删除,删除的值是%d\n", x);    
176         PrintList(&list);
177     }
178     
179     system("pause");
180     return 0;
181 }
182 
183  

 

posted @ 2021-12-05 09:50  快乐的余开心  阅读(224)  评论(0)    收藏  举报
!--点击火花特效-->