我还是减肥吧

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  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 } 

 

posted on 2014-05-24 16:56  adaonline  阅读(535)  评论(0编辑  收藏  举报