/*
一、資料結構書上對程式arrylist.c的某些定義
1.線性表的順序儲存結構
2.特點是邏輯關係上相鄰的兩個元素在物理位置上也相鄰,因此可以隨機訪問表中任一元素。它的儲存位置可用乙個簡單、直觀的公式來表示。但這個特點也鑄成了這種儲存結構
的弱點:在作插入和刪除操作時,需要移動大量元素。
二、寫arrylist.c的目的:
1.提公升寫**能力
2.體現儲存不一樣,操作也就不一樣。本檔案為連續儲存,比如刪除乙個元素後,其他地方的元素都要跟著移位置才行,而離散儲存就不一樣,不要都移動。
3.泛型儲存不一樣,操作也一樣。因為內部是通過c++的乙個模版內部實現了,導致外部看起來的效果一樣。這樣才能很好地理解泛型。
4.注意廣義演算法與狹義演算法,比如冒泡法排序,廣義的演算法就是指冒泡法,排序的方法,對於連續儲存和離散儲存都一樣。而狹義的演算法來說,連續儲存和離散儲存就不一樣了,也
就是操作不一樣。我認為,陣列構建簡單,操作起來較複雜,鍊錶構建起來複雜,但有時操作起來簡單。
*/#include "arraylist.h"
void init_arraylist(struct arraylist * parr,int lengh)
else
return;//程式設計風格,告訴其他人員此函式已結束
}int isempty(struct arraylist * parr)
int isfull(struct arraylist * parr)
void showarraylist(struct arraylist * parr)
for(i=0;ilen;i++)
printf("parr->pbase[%d]=%d\n",i,parr->pbase[i]);
return;
}int addtoend(struct arraylist * parr,int val)
parr->pbase[parr->cnt] = val;
parr->cnt++;
return 1;
}int deleteelement(struct arraylist * parr,int pos,int *whichdata)
if( pos < 1 || pos > parr->cnt)
*whichdata = parr->pbase[pos-1];
for(i=pos;icnt+1;i++)
parr->pbase[i-1] = parr->pbase[i];
parr->cnt--;
return 1; }
int insertarraylist(struct arraylist * parr,int pos,int val)
if( pos<1 || pos>parr->cnt)
for(i=parr->cnt; i>pos-1; i--)
parr->pbase[i] = parr->pbase[i-1];
parr->pbase[pos-1] = val;
parr->cnt++;
return 1;
}void inversionarraylist(struct arraylist * parr)
return;
}void sortarraylist(struct arraylist * parr)
for(i=0; icnt-1; i++)//冒泡法
for(j=i+1; jcnt; j++)
if( parr->pbase[i] > parr->pbase[j] )//公升序
}void freearraylist(struct arraylist * parr)
對應標頭檔案:
#ifndef arraylist_h
#define arraylist_h
#include #include #include struct arraylist;
void init_arraylist(struct arraylist * parr,int lengh);
int isempty(struct arraylist * parr);
int isfull(struct arraylist * parr);
void showarraylist(struct arraylist * parr);
int addtoend(struct arraylist * parr,int val);
int deleteelement(struct arraylist * parr,int pos,int *whichdata);
int insertarraylist(struct arraylist * parr,int pos,int val);
void inversionarraylist(struct arraylist * parr);
void sortarraylist(struct arraylist * parr);
void freearraylist(struct arraylist * parr);
#endif
線性表的順序儲存 線性表的順序儲存結構
1,本文實現乙個線性表 2,順序儲存定義 1,線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表中的資料元素 2,在 c 中可以用乙個陣列作為介質來儲存資料元素 3,設計思路 1,可以用一維陣列實現順序儲存結構 1,儲存空間 t m array 2,當前長度 int m length...
線性表 線性表的順序儲存結構
線性表的順序儲存結構 線性結構是乙個資料元素的有序 次序 集。集合中必存在唯一的乙個 第一元素 集合中必存在唯一的乙個 最後元素 除最後元素外,均有唯一的後繼 除第一元素外,均有唯一的前驅。adt list 資料關係 r1 adt list 容易混的概念 引用符號 和引用型操作沒有關係 加工型操作 ...
線性表 線性表的順序儲存結構
include include using namespace std define ok 1 define error 0 define list init size 100 define listincrement 10 typedef int status typedef int elemty...