c語言--線性表的順序儲存
阿新 • • 發佈:2018-12-19
實現線性表建立、插入、刪除、查詢和顯示線性表中元素等基本操作
#include "stdio.h" #include "malloc.h" #define MAXSIZE 200 //線性表允許的最大長度 #define datatype int typedef struct //定義線性表的結構 { datatype data[MAXSIZE]; //表示線性表(a1,a2,….,an) int last; //last表示線性表的實際長度 } SeqList; SeqList *init_SeqList( ) { SeqList *L; L=(SeqList *)malloc(sizeof(SeqList)); if(!L) return NULL; else { L->last=0; return L; } } int Insert_SeqList(SeqList *L,int i,datatype x) { int j; if(i<1||i>L->last+1) return 0; if(L->last>=MAXSIZE) { return 0; } for(j=L->last;j>=i-1;--j) L->data[j+1]=L->data[j]; L->data[i-1]=x; L->last++; return 1; } int Delete_SeqList(SeqList *L,int i) { int j; if(i<0||i>L->last) return 0; if(L->last<=0) { return 0; } for(j=i;j<=L->last-1;++j) L->data[j-1]=L->data[j]; L->last--; return 1; } int Location_SeqList(SeqList *L, datatype x) // 查詢元素x { int i=1; while ( i <=L->last && L->data[i] != x ) i++; if ( i <=L->last ) return (i); else return (0); } void print(SeqList *L) //列印線性表 { int i; for(i=0;i<L->last;i++) printf("%4d",L->data[i]); } void main() { SeqList *L; int i,j,k; datatype x; do { printf("\n\n\n\n"); printf("\t\t\t 線性表子系統\n"); printf("\t\t*******************************\n"); printf("\t\t* 1----初始化表 *\n"); printf("\t\t* 2----插 入 *\n"); printf("\t\t* 3----刪 除 *\n"); printf("\t\t* 4----查 找 *\n"); printf("\t\t* 5----顯 示 *\n"); printf("\t\t* 0----返 回 *\n"); printf("\t\t*******************************\n"); printf("\t\t 請選擇選單項(0-5):"); scanf("%d",&k);getchar(); switch(k) { case 1: L=init_SeqList( ); //初始化線性表 break; case 2: //線上性表第i位置處插入值為X的元素 printf("\n 請輸入插入的位置i和資料X(輸入格式:i,X):"); scanf("%d,%d",&i,&x); Insert_SeqList(L,i,x); break; case 3: //刪除線性表中值為X的元素 printf("\n 請輸入要刪除元素的位置i:"); scanf("%d",&i); j=Delete_SeqList(L,i); if (j == 1) printf("刪除成功!!"); else printf("刪除失敗!!"); break; case 4: //查詢線性表中元素值為x的位置 printf("\n 請輸入要查詢的數值X:"); scanf("%d",&x); j=Location_SeqList(L,x); if (j != -1 ) { print(L);printf("中值為X所在的位置是 %d ",j);} else printf("線性表中無此元素!!\n"); break; case 5: //輸出線性表 printf("\n線性表的順序儲存為:"); print(L); } }while(k!=0); }
說明:1.這個是鄙人大二期間所學,所以模板很多人都用過,如有雷同,不是偶然。 2.發部落格只為了紀念所學所感,於此而已。