• <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)和算法分析
            久久久久亚洲av毛片大| 亚洲va中文字幕无码久久| 久久性生大片免费观看性| 久久综合给合综合久久| 少妇熟女久久综合网色欲| 精品少妇人妻av无码久久| 国产亚洲美女精品久久久| 亚洲国产精品综合久久网络 | 国产精品内射久久久久欢欢 | 久久久精品国产sm调教网站| 欧美精品一区二区精品久久| 亚洲国产综合久久天堂| 国产婷婷成人久久Av免费高清| 国产日韩久久久精品影院首页| 狠狠色婷婷久久一区二区| 国产成人精品久久亚洲高清不卡 | 亚洲国产婷婷香蕉久久久久久| 久久精品国产91久久综合麻豆自制 | 久久青青草原亚洲av无码app| 久久免费视频一区| 国产精品99久久免费观看| 久久久久国产精品麻豆AR影院| 久久久久亚洲av无码专区导航| 亚洲国产精品成人久久蜜臀 | 一本久久精品一区二区| 亚洲国产精品久久66| 久久婷婷国产综合精品 | 嫩草影院久久99| 久久狠狠高潮亚洲精品| 国产精品中文久久久久久久| 国产999精品久久久久久| 久久精品99久久香蕉国产色戒| 亚洲国产另类久久久精品黑人| 久久综合成人网| 久久中文字幕视频、最近更新 | 性做久久久久久久久浪潮| 香蕉久久夜色精品国产小说| 777米奇久久最新地址| 国产亚洲欧美成人久久片| 日本人妻丰满熟妇久久久久久| 亚洲午夜久久久久妓女影院 |