c语言线性表

  1 #include<stdio.h>

  2 #include<time.h>

  3 #include<stdlib.h>

  4 #define MAXSIZE 20 //初始长度

  5 

  6  

  7 

  8 typedef int ElemType; //类型为int

  9 typedef struct{

 10     ElemType data[MAXSIZE];//数组。存储元素

 11     int length;          

 12 }SqList;

 13 //顺序表的初始化 

 14 SqList Init(){

 15     //创建一个空的线性表L,时间复杂度O(1) 

 16     SqList L; //定义

 17     L.length=0;//初始长度为0

 18     return L; //返回空顺序表 

 19 }

 20 //顺序表的建立

 21 SqList Create(SqList L)

 22 {

 23     int i;

 24     srand((unsigned)time(NULL));

 25     for(i=0;i<10;i++)

 26     {

 27         L.data[i]=rand()%100;

 28         L.length++;

 29     }

 30     return L; 

 31 } 

 32 //用e返回线性表中第i个元素的值

 33 //此时L应该已经存在

 34 ElemType GetElem(SqList L,int i)

 35 {

 36     if(i<1||i>L.length)

 37     {

 38         printf("查找位置错误!\n");//位置是否合法 

 39         return 0;       

 40     } 

 41     else

 42         return L.data[i-1];

 43 } 

 44 //顺序表的插入

 45 SqList ListInsert(SqList L, int i, ElemType x)

 46 { //在顺序表中的第i个位置插入元素x

 47 

 48     if(L.length == MAXSIZE)

 49         printf("表已经满了\n");//插入时,必须检查表是否已经满了。否则会出现溢出错误

 50     else if(i < 1 || i > L.length)

 51         printf("插入位置错误\n");//判断插入位置的有效性

 52     int j;

 53     for(j = L.length-1; j >= i - 1; j--)//第i个位置元素逐个后移

 54         L.data[j+1] = L.data[j];

 55     L.data[i-1] = x;                        //插入元素x

 56     L.length++;                         //顺序表长度增1

 57 

 58     return L;

 59 

 60 }

 61 

 62 //删除元素 

 63 SqList ListDelete(SqList L,int i)

 64 {

 65     int k;

 66     if(L.length==0) //线性表为空 

 67         printf("表为空无法删除"); 

 68     if(i<1||i>L.length)

 69         printf("删除的位置不正确");

 70     if(i<L.length)

 71     {

 72         for(k=i;k<L.length;k++)//将删除的位置后继元素前移 

 73              L.data[k-1]=L.data[k];

 74         L.length--;

 75     }

 76     return L;

 77 }

 78 int main()

 79 {

 80     SqList l;

 81     l=Init();

 82     l=Create(l);

 83     char choose;//操作选择 

 84     int find;//查找操作 

 85     int found;//查找到的元素 

 86     

 87     int position;//标记元素的位置

 88     int value;//插入的元素

 89      

 90     int i;

 91     

 92     printf("初始化完成.........\n"); 

 93     

 94     while(true){ 

 95         

 96         

 97         printf("\n1.查看顺序表 \n2.查找元素 \n3.插入元素 \n4.删除元素  \n5.退出 \n请选择你的操作。。。"); 

 98         scanf("%c",&choose);

 99         

100         switch(choose){

101             case '1':

102                 system("cls");

103                 printf("查看线性表:"); 

104                 for(i=0;i<l.length;i++)

105                 {

106                     printf("%d  ",l.data[i]);

107                 } 

108                 printf("\n");

109                 break;

110             case '2':

111                 system("cls"); 

112                 printf("输入你要查找第几个元素?\n"); 

113                 scanf("%d",&find);

114                 found=GetElem(l,find);

115                 printf("第%d个值为%d\n",find,found); 

116                 break;

117             case '3':

118                 system("cls");

119                 printf("请输入要插入的元素位置:"); 

120                 scanf("%d",&position);

121                 printf("输入要插入的元素的值:");

122                 scanf("%d",&value); 

123                 l=ListInsert(l,position,value);

124                 

125                 printf("\n插入后的顺序表为:");

126                 for(i=0;i<l.length;i++)

127                 {

128                      printf("%d  ",l.data[i]);

129                 } 

130                 printf("\n");

131                 break; 

132             case '4':

133                 system("cls");

134                 printf("请输入要删除掉的元素位置:\n"); 

135                 scanf("%d",&position);

136                 l=ListDelete(l,position);

137                 printf("\n删除后的顺序表为:");

138                 for(i=0;i<l.length;i++)

139                 {

140                      printf("%d  ",l.data[i]);

141                 } 

142                 printf("\n");

143                 break;

144             case '0': 

145                 exit(0);

146                 

147     } 

148     

149     }

150     system("pause");

151 } 

 

你可能感兴趣的:(C语言)