• <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 閱讀(922) 評論(0)  編輯 收藏 引用 所屬分類: 數據結構和算法分析
            久久涩综合| 亚洲欧美国产精品专区久久| 91麻豆精品国产91久久久久久 | 久久夜色精品国产网站| 亚洲AV无码久久精品狠狠爱浪潮| 青青草国产成人久久91网| 香蕉久久久久久狠狠色| 国产精品gz久久久| 久久婷婷五月综合色奶水99啪| 亚洲精品综合久久| 青青青青久久精品国产h| 久久精品无码午夜福利理论片| 久久婷婷国产剧情内射白浆| 狠狠综合久久综合中文88| 久久综合狠狠综合久久| 狠狠精品久久久无码中文字幕| 香蕉99久久国产综合精品宅男自| 国产精品久久久久久久久久免费| 99精品久久精品一区二区| 日产精品久久久久久久| 综合久久精品色| 久久久噜噜噜久久中文字幕色伊伊 | 九九久久自然熟的香蕉图片| 久久人妻AV中文字幕| 欧美国产成人久久精品| 色青青草原桃花久久综合| 久久久久99这里有精品10| 伊人久久精品影院| 性做久久久久久久久浪潮| 久久久久人妻一区二区三区 | 久久精品国产亚洲5555| 青青青国产精品国产精品久久久久 | 亚洲国产天堂久久久久久| 久久se精品一区精品二区国产| 亚洲伊人久久成综合人影院 | 合区精品久久久中文字幕一区| 精品伊人久久久| 人妻少妇久久中文字幕| 久久久青草青青亚洲国产免观| 久久久久国色AV免费观看| 久久SE精品一区二区|