• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-145  評(píng)論-173  文章-70  trackbacks-0

            1.設(shè)某線性表數(shù)據(jù)元素的類型為整型,以順序結(jié)構(gòu)存儲(chǔ)線性表。試編程實(shí)現(xiàn):

            (1) 線性表置空

            (2) 求線性表長(zhǎng)度

            (3) 數(shù)據(jù)元素的插入操作

            (4) 數(shù)據(jù)元素的刪除操作

            (5) 顯示線性表中的全部元素


            #include<stdio.h>
            #include<malloc.h>
            #include <conio.h>
            #include <stdlib.h>
            #define LIST_INIT_SIZE 10
            #define LISTINCREMENT 10
            #define ERROR     0
            #define OK        1
            #define OVERFLOW  -2

            typedef struct{
               int *elem;
               int length;
               int listsize;
               }SqList;

            int InitList_Sq(SqList *L) //括號(hào)中傳遞參數(shù)是是它的指針L,這樣才能對(duì)它指向的元素改變。
            {
              int i;
              L->elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));
              if(!L->elem)  exit(OVERFLOW);
              L->length =10;
              L->listsize = LIST_INIT_SIZE; //分配初始的空間
              for(i=0;i<L->length;i++)
              {
                  L->elem[i]=i;
              }
              return OK;
            }//InitList_Sq

            int get_length(SqList *L)
            {
                return L->length;
            }

            int destroy(SqList *L)
            {
                L->length=0;
                return OK;
            }

            int ListInsert_Sq(SqList *L,int i, int e)
            { //在順序表L中的第i個(gè)位置之前插入新的元素e;
                //i的合法值為1<=i<=ListLength_Sq(L)+1;
                int *newbase,*q,*p;
                if(i<1||i>L->length+1) return ERROR;
                if(L->length>=L->listsize){// 當(dāng)前的存儲(chǔ)空間已滿,增加分配
                     newbase = ( int *)realloc(L->elem,( L->listsize +LISTINCREMENT)*sizeof(int));
                     if(!newbase) exit(OVERFLOW) ; //存儲(chǔ)空間分配失敗
                     L->elem = newbase;
                     L->listsize+=LISTINCREMENT;    
               }
               q=&(L->elem[i-1]);
               for(p=&(L->elem[L->length-1]);p>=q;--p)  *(p+1)=*p;
                                                   //插入位置及之后的元素右移            
               *q=e;
               ++L->length;
               return OK;
            }//ListInsert_Sq;

            int ListDelete_Sq(SqList *L, int i, int e) {  
              // 在順序線性表L中刪除第i個(gè)元素,并用e返回其值。
              // i的合法值為1≤i≤ListLength_Sq(L)。
              int *p, *q;
              if (i<1 || i>L->length) return ERROR;  // i值不合法
              p = &(L->elem[i-1]);                   // p為被刪除元素的位置
              e = *p;                               // 被刪除元素的值賦給e
              q = L->elem+L->length-1;                // 表尾元素的位置
              for (++p; p<=q; ++p) *(p-1) = *p;     // 被刪除元素之后的元素左移
              --L->length;                           // 表長(zhǎng)減1
              return OK;
            } // ListDelete_Sq

            int display_all(SqList *L)
            {
                int i;
                for(i=0;i<L->length;i++)
                {
                    printf("%d",L->elem[i]);
                    printf(" ");
                }
                return OK;
            }
            int main()
            {
                SqList L;
                int get,e=0;
                int i,num;
                InitList_Sq(&L);
                do{
                printf("請(qǐng)輸入你要進(jìn)行的操作序號(hào)\n");
                printf("1.線性表置空\(chéng)n");
                printf("2.求線性表長(zhǎng)度\n");
                printf("3.數(shù)據(jù)元素的插入操作\n");
                printf("4.數(shù)據(jù)元素的刪除操作\n");
                printf("5.顯示線性表中的全部元素\n");
                printf("6.退出\n");
                scanf("%d",&get);
                switch(get)
                {
                case 1:
                      destroy(&L);//將順序表置空,只需要將其長(zhǎng)度置零
                      break;
                case 2:
                      printf("該線性表的長(zhǎng)度是%d\n",get_length(&L)); //求取線性表的長(zhǎng)度
                      break;
                case 3:
                      //在指定的位置上插入指定的數(shù)據(jù)元素
                      printf("請(qǐng)輸入你要插入的元素的位置(即在第i個(gè)元素之前插入)以及插入元素\n");
                      scanf("%d,%d",&i,&num);
                      ListInsert_Sq(&L,i,num);
                      printf("新的線性表是\n");
                      display_all(&L);
                      break;
                case 4:
                    //刪除指定位置的數(shù)據(jù)元素
                      printf("請(qǐng)輸入你要?jiǎng)h除的元素的位置(即刪除第i個(gè)元素)\n");
                      scanf("%d",&i);
                      ListDelete_Sq(&L,i,e);
                      printf("新的線性表是\n");
                      display_all(&L);
                      break;
                case 5:
                    //顯示線性表的所有元素
                      display_all(&L);
                      printf("\n");
                      break;
                case 6:
                    //退出程序
                      break;
                }
                }while(get!=6);
                return OK;
            }
            posted on 2009-11-27 21:35 deercoder 閱讀(922) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 數(shù)據(jù)結(jié)構(gòu)和算法分析
            国产精品久久久久…| 中文无码久久精品| 精品水蜜桃久久久久久久| 亚洲午夜精品久久久久久人妖| 国产叼嘿久久精品久久| 亚洲色欲久久久综合网| 秋霞久久国产精品电影院| 久久免费观看视频| 亚洲日韩中文无码久久| 婷婷综合久久中文字幕| 最新久久免费视频| 青青草国产精品久久| 亚洲国产成人精品久久久国产成人一区二区三区综 | 人人狠狠综合久久亚洲| 人妻无码中文久久久久专区 | 久久99精品久久久久久野外 | 亚洲精品无码久久久| 国产精品久久久久天天影视| 青草久久久国产线免观| 久久精品男人影院| 亚洲中文字幕无码久久2020| 亚洲国产精品无码久久久久久曰| 久久w5ww成w人免费| 亚洲伊人久久精品影院| 亚洲精品成人久久久| 久久久久人妻精品一区三寸蜜桃| AV狠狠色丁香婷婷综合久久| 久久香综合精品久久伊人| 日韩AV毛片精品久久久| 亚洲精品综合久久| 久久午夜福利电影| 亚洲а∨天堂久久精品9966| 手机看片久久高清国产日韩| 久久这里只有精品视频99| 久久99精品九九九久久婷婷| 精品久久久久久久久久久久久久久| 四虎国产精品免费久久5151| 久久综合狠狠综合久久激情 | 青草影院天堂男人久久| 欧美一区二区精品久久| 精品久久久久久久久久久久久久久|