1、第一步:线性顺序表的创建。 线性顺序表是存储在一个连续的数组中的,因此对其数据类型有一个结构体声明。#include <stdio.h>#include <stdlib.h>#define MaxSize 20typedef int datatype;typedef struct list{datatype data[MaxSize]; int last;}seqlist;
2、第二步:添加元素。 在顺序线性表中添加元素的原理就是,找到给定的位置,将给定位置到线性表结束的所有元素后移一位,然后将新元素添加到给定的位置中。
3、/*在顺序线性表中i的位置添加元素x*/int insert_seqlist(seqlist *盟敢势袂l,datatype x,足毂忍珩int i){ int j; if((*l).last > MaxSize) { printf("溢出\n"); return 0; } else if((i<1)||(i>(*l).last+1)) { printf("位置有误\n"); return 0; } else { for(j=(*l).last-1;j>=i-1;j--) (*l).data[j+1] = (*l).data[j]; (*l).data[i-1] = x; (*l).last = (*l).last + 1; return 1; }}/*在顺序线性表中i的位置添加元素x*/
4、第三步:查找元素。 给定元素的值,查找线性表中是否存在该元素,做法是遍历所有线性表中的元素,如果存在则返回元素的位置,否则正常结束。
5、/*在顺序线性表中查找给定值为X的节点*/int search_seqlist(seqlist *l,datatype x){ int j; for(j=0;j<(*l).last-1;j++) { if((*l).data[j] == x) return j+1; } return 0;}/*在顺序线性表中查找给定值为X的节点*/
6、第四步:删除指定位置的元素。 原理是将指定位置以后的所有元素集体前移一位。
7、/*在顺序线性表中i的位置删除元素x*/int del_seqlist(seqlist *l,int i){ int j; i熠硒勘唏f(i>MaxSize) { printf("超出线性表范围。\n"); return 0; } else if(i<1||i>(*l).last) { printf("该节点不存在。\n"); return 0; } else { for(j=i-1;j<(*l).last;j++) (*l).data[j] = (*l).data[j+1]; (*l).last--; return 1; }}/*在顺序线性表中i的位置删除元素x*/
8、第五步:线性表的输出。 将线性表中的所有元素全部输出,每四个一行。
9、/*输出顺序线性表的全部值*/void prf_seqlist(seqlist *l){ int j; for(j=1;j<=(*l).last;j++) { printf("%d ",(*l).data[j-1]); if(j%4==0) printf("\n"); } printf("\n");}/*输出顺序线性表的全部值*/
10、第六步:主函数测试。 我们先建立包含九个元素的线性表(测试添加函数),然后查找包含数值为5的元素是否存在(测试查找函数),并将其删除(测试删除函数),并输出所有元素(测试输出函数)。
11、int main()辘腋粪梯{ seqlist *l; (*l).last = 0; int a; int j; int locate; for(j=1;j<10;j++) { printf("please input number:"); scanf("%d",&a); insert_seqlist(l,a,j); } prf_seqlist(l); locate = search_seqlist(l,5); del_seqlist(l,locate); prf_seqlist(l); system("pause"); return 0;}
12、第七步:测试效果。 从结果我们可以看出,程序运行正常,结果符合预期。