• <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 閱讀(928) 評論(0)  編輯 收藏 引用 所屬分類: 數據結構和算法分析
            91精品国产高清久久久久久io | 亚洲国产成人精品久久久国产成人一区二区三区综 | 久久亚洲中文字幕精品一区| 91精品国产91久久久久久青草| 国产AV影片久久久久久| 久久精品无码一区二区三区日韩 | 无码任你躁久久久久久久| 亚洲欧洲精品成人久久曰影片| 一本一本久久A久久综合精品 | 亚洲中文字幕久久精品无码喷水| 午夜精品久久久久久99热| 色偷偷888欧美精品久久久| 理论片午午伦夜理片久久| 久久久女人与动物群交毛片| 久久99精品国产99久久6| 亚洲国产精品无码久久98| 久久精品无码一区二区app| 久久ZYZ资源站无码中文动漫| 激情综合色综合久久综合| 无码伊人66久久大杳蕉网站谷歌| 99久久国产亚洲高清观看2024| 亚洲中文精品久久久久久不卡| 久久九九免费高清视频| 久久精品国产亚洲沈樵| 久久精品人人做人人爽97| 色青青草原桃花久久综合| 久久久久国产精品麻豆AR影院 | 囯产极品美女高潮无套久久久 | 久久精品综合一区二区三区| 久久九九有精品国产23百花影院| 综合久久国产九一剧情麻豆 | 亚洲精品WWW久久久久久| 亚洲嫩草影院久久精品| 国产精品久久国产精麻豆99网站| 色婷婷综合久久久久中文一区二区| 亚洲国产天堂久久综合| 久久夜色精品国产| 欧美色综合久久久久久 | 日日噜噜夜夜狠狠久久丁香五月| 性做久久久久久久久| 亚洲精品tv久久久久久久久久|