程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 將e插入到順序表的適當位置上以保持該表的有序性

將e插入到順序表的適當位置上以保持該表的有序性

編輯:關於C語言

001 #define true 1 

002 #define false 0 

003 #define ok 1 

004 #define error 0 

005 #define infeasible -1 

006 #define overflow -2 

007 #define list_init_size 100 

008 #define listincrement 10 

009 #include<stdio.h> 

010 #include<malloc.h> 

011 typedef int ElemType; 

012 typedef int Status; 

013   

014 typedef struct

015 { 

016     ElemType *elem;//存儲空間的基址,數組指針elem指示線性表的基地址 

017     int length; 

018     int listsize;//定義分配給順序表的存儲容量; 

019 } SqList; 

020   

021 Status InitList(SqList*L) 

022 { 

023     (*L).elem=(ElemType*)malloc(list_init_size*sizeof(ElemType)); 

024     printf("順序表基址為:%d\n",(*L).elem); 

025     if(!(*L).elem)exit(overflow); 

026     (*L).length=0; 

027     (*L).listsize=list_init_size; 

028     return ok; 

029 } 

030   

031 Status DeleteK(SqList *L,int i,int k) 

032 { 

033     //本過程從順序存儲結構的線性表a中刪除第i個元素起的k個元素 

034     int j; 

035     if(i<1||k<0||i+k>(*L).length) return infeasible;//參數不合法 

036     else

037     { 

038         for(j=i+k-2; j<=(*L).length-1&&i<=i+k-2; j++,i++)(*L).elem[i-1]=(*L).elem[j+1]; 

039         (*L).length=(*L).length-k; 

040         return ok; 

041     } 

042   

043 } 

044   

045 Status insert_suitable_position(SqList *L,ElemType e) 

046 { 

047     //將e插入到順序表的適當位置上以保持該表的有序性; 

048     int i,j; 

049     for(i=0; i<=(*L).length-1; i++)//找到大於e的位置; 

050     { 

051         if((*L).elem[i]>e)break; 

052     } 

053     if(i>(*L).length-1)//插到尾巴的情況; 

054     { 

055         (*L).elem[(*L).length]=e; 

056         (*L).length++; 

057         return ok; 

058     } 

059     //插入到i-1位置; 

060     for(j=(*L).length-1; j>=i-1; j--) 

061     { 

062         (*L).elem[j+1]=(*L).elem[j]; 

063     } 

064     (*L).length++; 

065     return ok; 

066 } 

067   

068 Status insert_suitable_position_better(SqList *L,ElemType e) 

069 { 

070     //將e插入到順序表的適當位置上以保持該表的有序性; 

071     int j; 

072     for(j=(*L).length;j>0,e<(*L).elem[j-1]; j--) 

073     { 

074         (*L).elem[j]=(*L).elem[j-1]; 

075     } 

076     (*L).elem[j]=e; 

077     (*L).length++; 

078     return ok; 

079 } 

080   

081 void main() 

082 { 

083   

084     SqList L; 

085     int i,j,e,n,m,k; 

086     InitList(&L); 

087     L.length=10;//將長度設為10,方便後面測試; 

088     for(i=0; i<L.length; i++) 

089     { 

090         L.elem[i]=i; 

091     } 

092     for(j=0; j<L.length; j++) 

093     { 

094         printf("%d\t",L.elem[j]); 

095     } 

096     printf("\n插入的數字是?\n"); 

097     scanf("%d",&e); 

098     insert_suitable_position_better(&L,e); 

099     for(j=0; j<L.length; j++) 

100     { 

101         printf("%d\t",L.elem[j]); 

102     } 

 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved