顺序表的C语言实现

一直在复习数学,想着要在六月底之前把数学三门四本书都过一遍,最近看到了线性代数了,好多学了都忘记了,慢慢来吧!

前段时间看的线性表了,才看了一点点,关于顺序表大致实现了下,后面抽看看看数据结构了,数学得全力复习了。准备暑假开始系统复习专业课,加油吧!

顺序表代码如下,简单实现了下,正好抓住这个机会复习了结构体,指针等知识。main()函数里写的比较乱,主要在于其他子函数里的实现

顺序表的C语言实现
  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 
  4 #define LIST_SIZE 100
  5 
  6 typedef int ElemType;
  7 ElemType location;
  8 
  9 typedef struct
 10 {
 11     int elem[LIST_SIZE];
 12     int length;
 13 }SqList;
 14 // 初始化顺序表
 15 int InitList(SqList *L,int len)
 16 {
 17     L->length = len;
 18     return 1;
 19 }
 20 // 输入顺序表中元素
 21 int ScanList(SqList *L)
 22 {
 23     int i;
 24     for(i = 0;i < L->length;i++)
 25     {
 26         scanf_s("%d",&L->elem[i]);
 27     }
 28     return 1;
 29 }
 30 // 遍历顺序表
 31 void TraverseList(SqList *L)
 32 {
 33     int i;
 34     for(i = 0;i < L->length;i++)
 35     {
 36         printf("%d     ",L->elem[i]);
 37     }
 38 }
 39 // 销毁顺序表
 40 int DestoryList(SqList *L)
 41 {
 42     free(L->elem);
 43     L->length = 0;
 44     return 1;
 45 }
 46 // 清空顺序表
 47 int ClearList(SqList *L)
 48 {
 49     L->length = 0;
 50     return 1;
 51 }
 52 // 判断顺序表是否为空
 53 int ListIsEmpty(SqList *L)
 54 {
 55     if(L->length == 0)
 56     {
 57         return 0;
 58     }else
 59     {
 60         return 1;
 61     }
 62 }
 63 // 按照下标查找顺序表中元素
 64 int GetList(SqList *L, int i)
 65 {
 66     if(i < 0||i > L->length)
 67     {
 68         return 0;
 69     }else
 70     {
 71         return 1;
 72     }
 73 }
 74 // 查找元素的位置
 75 int LocatList(SqList *L, ElemType e)
 76 {
 77     int i = 0;
 78     for(i = 0;i < L->length;i++)
 79     {
 80         if(L->elem[i] == e)
 81         {
 82             location = i;
 83             return 1;
 84         }
 85     }
 86     return 0;
 87 }
 88 // 插入元素
 89 int InsertList(SqList *L,int n)
 90 {
 91     int *p,*q;
 92 
 93     if(L->length == 0)
 94     {
 95         L->elem[0] = n;
 96         ++L->length;
 97     }
 98     q = &(L->elem[0]);
 99     while ((*q <= n)&&(q <= &(L->elem[L->length - 1])))
100     {
101         ++q;
102     }
103     ++L->length;
104     for(p = &(L->elem[L->length -1]);p >= q;--p)
105     {
106         *(p + 1) = *p;
107         *p = n;
108     }
109 
110     return 0;
111 }
112 // 删除元素
113 int DeleteList(SqList *L,int n)
114 {
115     int *p, *q;
116     q = &(L->elem[0]);
117     while ((*q < n)&&(q < &(L->elem[L->length - 1])))
118     {
119         ++q;
120     }
121     for(p = &(L->elem[L->length - 1]);p >= q;++q)
122     {
123         *q = *(q + 1);
124     }
125     --L->length;
126     return 0;
127 }
128 
129 int main()
130 {
131     int i;
132     int lengthOfNew;
133     int search;
134     int insertNum;
135     int deleteNum;
136     SqList L;
137     printf("请输入顺序表长度:\n");
138     scanf_s("%d",&lengthOfNew);
139     if(InitList(&L,lengthOfNew))
140     {
141         printf("顺序表建立完成\n");
142     }
143     printf("输入顺序表中的元素:\n");
144     ScanList(&L);
145     printf("\n");
146     printf("顺序表中元素为:\n");
147     TraverseList(&L);
148     printf("\n");
149     printf("输入元素下标进行查找:\n");
150     scanf_s("%d",&i);
151     if(!GetList(&L,i))
152     {
153         printf("越界\n");
154     }else
155     {
156         printf("查找的元素为:%d\n",L.elem[i-1]);
157     }
158     printf("请输入需要查找的元素:\n");
159     scanf_s("%d",&search);
160     if(LocatList(&L,search))
161     {
162         printf("查找的元素位置为:%d\n",location + 1);
163     }else
164     {
165         printf("没有查找到该元素!\n");
166     }
167     printf("输入要插入的元素:\n");
168     scanf_s("%d",&insertNum);
169     InsertList(&L, insertNum);
170     TraverseList(&L);
171     printf("\n");
172     printf("输入要删除的元素:\n");
173     scanf_s("%d",&deleteNum);
174     DeleteList(&L, deleteNum);
175     TraverseList(&L);
176     printf("\n");
177     system("pause");
178     return 0;
179 }
顺序表的C语言实现

 

顺序表的C语言实现,布布扣,bubuko.com

顺序表的C语言实现

上一篇:IDEA分析JAVA内存溢出和内存泄漏


下一篇:vim 按tab补全 并取消 “按Enterg确定的提示”