C語言線性表順序存儲結構實例詳解
1、 什么是順序存儲結構?
用一段地址連續的存儲單元依次存儲線性表的數據元素。
2、線性表的順序存儲結構
#include<stdio.h>#include<stdlib.h>#define Max 80 //存儲空間初始分配量 #define Increment 10 //存儲空間分配增量typedef struct{ int *elem; // 存儲空間基地址,此處為int型,視情況而定 int length; // 元素表當前長度 int size; //當親分配的存儲容量 }SqList; 3、順序表的初始化操作是為順序表分配一個預定大小的數組空間,并將順序表的長度設為0。
<一>int InitList(SqList &L){ L.elem=(int *)malloc(Max*sizeof(int)); if(!L.elem) return;//exit(0); //存儲分配失敗 L.length=0; //空表長度為0 L.size=Max; //初始存儲容量 return Ok;} <二>int CreatList(SqList &L){ L.elem=(int *)malloc(Max*sizeof(int)); if(!L.emle) return;//exit(0); L.length=0; L.size=Max; printf("請輸入表的長度:"); scanf("%d",&L.length); printf("請輸入%d個數:",L.length); for(i=0;i<L.length;i++) scanf("%d",&L.elem[i]);}4.獲取元素操作:將線性表中的第i個位置元素值位置返回
int GetElem(SqList &L,int i,int e) { // 1 <= i <= L.length if( i <1 || i > L.length) return ERROR; *e=L.elem[i-1]; return Ok;}5線性表的插入操作
“ int Insert(SqList &L) { int *_new; int i; int e; printf(“輸入要插入的位置及其元素:”); scanf(“%d %d”,&i,&e); if(i<1||i>L.length) { printf(“插入的位置不合法!”); return ERROR; } if(L.length>=L.size) //當前空間已滿,增加分配 { _new=(int)malloc(L.elem,(L.length+Increment)*sizeof(int)); if(!_new) //存儲分配失敗 return; //exit(0); L.elem=_new; //新基址 L.size=L.size+Increment; //增加存儲容量 } q=&(L.elem[i-1]); //q為插入的位置 for(p=&(L.elem(L.length-1));p>=q;
主站蜘蛛池模板:
平江县|
淮北市|
朝阳市|
博罗县|
油尖旺区|
迁西县|
平昌县|
板桥市|
五家渠市|
常州市|
紫阳县|
迁安市|
西畴县|
合作市|
鄂州市|
集贤县|
洛隆县|
南靖县|
玉山县|
喜德县|
香河县|
山西省|
延川县|
青神县|
仙桃市|
含山县|
青铜峡市|
廉江市|
陈巴尔虎旗|
留坝县|
大化|
平利县|
麻栗坡县|
延安市|
水城县|
浏阳市|
迁西县|
新龙县|
柳河县|
钟山县|
克山县|