• <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  評論-173  文章-70  trackbacks-0

            1.設某線性表數據元素的類型為整型,以順序結構存儲線性表。試編程實現:

            (1) 線性表置空

            (2) 求線性表長度

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

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

            (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) //括號中傳遞參數是是它的指針L,這樣才能對它指向的元素改變。
            {
              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個位置之前插入新的元素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){// 當前的存儲空間已滿,增加分配
                     newbase = ( int *)realloc(L->elem,( L->listsize +LISTINCREMENT)*sizeof(int));
                     if(!newbase) exit(OVERFLOW) ; //存儲空間分配失敗
                     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個元素,并用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;                           // 表長減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("請輸入你要進行的操作序號\n");
                printf("1.線性表置空\n");
                printf("2.求線性表長度\n");
                printf("3.數據元素的插入操作\n");
                printf("4.數據元素的刪除操作\n");
                printf("5.顯示線性表中的全部元素\n");
                printf("6.退出\n");
                scanf("%d",&get);
                switch(get)
                {
                case 1:
                      destroy(&L);//將順序表置空,只需要將其長度置零
                      break;
                case 2:
                      printf("該線性表的長度是%d\n",get_length(&L)); //求取線性表的長度
                      break;
                case 3:
                      //在指定的位置上插入指定的數據元素
                      printf("請輸入你要插入的元素的位置(即在第i個元素之前插入)以及插入元素\n");
                      scanf("%d,%d",&i,&num);
                      ListInsert_Sq(&L,i,num);
                      printf("新的線性表是\n");
                      display_all(&L);
                      break;
                case 4:
                    //刪除指定位置的數據元素
                      printf("請輸入你要刪除的元素的位置(即刪除第i個元素)\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 閱讀(930) 評論(0)  編輯 收藏 引用 所屬分類: 數據結構和算法分析
            av午夜福利一片免费看久久| 久久精品国产亚洲AV影院| 狠狠干狠狠久久| 久久国产视频网| 久久久久久久97| 久久青青国产| 久久午夜无码鲁丝片秋霞| AV无码久久久久不卡蜜桃| 久久99精品久久久久久| 午夜精品久久久内射近拍高清 | 伊色综合久久之综合久久| 精品久久久中文字幕人妻| 91精品国产色综久久| 精品伊人久久久| 国产精品免费久久久久影院 | 久久亚洲中文字幕精品有坂深雪| 亚洲狠狠综合久久| 亚洲日本va中文字幕久久| 欧美激情精品久久久久久| 久久综合久久久| AV无码久久久久不卡蜜桃| 久久精品无码一区二区WWW| 久久99精品久久久久久齐齐| 97超级碰碰碰久久久久| 伊人久久大香线蕉AV色婷婷色| 国内精品久久久久影院网站| 久久九九全国免费| 久久91精品久久91综合| 97久久超碰国产精品旧版| 色狠狠久久AV五月综合| 伊人久久大香线蕉亚洲| 精品国产青草久久久久福利| 久久夜色精品国产噜噜亚洲a| 久久精品国产亚洲AV不卡| 国产精品99久久久久久www| 日韩精品久久久久久| 久久狠狠色狠狠色综合| 国产成人久久激情91| 91超碰碰碰碰久久久久久综合| 亚洲午夜久久影院| 国产综合成人久久大片91|