資料結構筆記(一)——線性表
線性表就是乙個一維的表,其中各個元素之間是一對一的。
對線性表的定義:
adt 線性表(list)
data
線性表的資料物件集合{a1,a2,……,an},每個元素的型別均為datatype。其中,出來第乙個元素a1外,每乙個元素有且只有乙個直接前驅元素,出來最後乙個元素an外,每乙個元素有且只有乙個直接後繼元素。資料元素之間的關係是一對一的關係。
operation
initlist(*l): 初始化操作,建立乙個空的線性表l。
listempty(l): 若線性表為空,返回true,否則返回false。
clearlist(*l): 將線性表清空。
getelem(l,i,*e): 將線性表l中的第i個元素返回給e。
置,否則返回0表示失敗。
listdelete(*l,i,*e): 刪除線性表l中的第i個元素,使用e作為返回值。
listlength(l): 返回線性表l的長度。
寫完了乙個線性表,那麼如果要做兩個線性表元素的並集則可用如下**實現:
void unionl(list *la,list*lb)
}
線性表有兩種儲存結構,一是順序儲存,二是鏈式儲存。其中順序儲存可以用c語言中的一維陣列來實現。其中需要注意的是估算最大儲存容量,建立乙個陣列,此容量不能超過總儲存空間的最大儲存容量,還需要注意建立這個陣列的起始儲存空間,而這個陣列的最大儲存容量自然不能超過從此位置到中儲存空間末尾的空間。
下為順序儲存的結構**:
#define maxsize 20
typedef int elemtype;
typedef struct
sqlist;
順序儲存結構的插入與刪除
#define ok 1
#define error 0
#difine true 1
#define false 0
typedef int status;
//初始條件:順序線性表l存在,1<=i<=listlength(l)
//操作結果:用e返回l中第i個資料元素的值
status getelem(sqlist l,int i,elemtype *e)
插入操作:
//初始條件:順序線性表l已經存在,1length==maxsize)
return error;
if(i<1||i>l->length)
return error;
if(ilength)
l->data[i-1]=e;
l->length++;
return ok;
}
刪除操作:
//操作結果:刪除l的第i個資料元素,並用e做返回值,l的長度減1。
status listdelete(sqlist *l,int i,elemtype *e)
l->length--;
return ok;
}
現在開始線性表的鏈式儲存
//線性表的單鏈表儲存結構
typedef struct node
node;
typedef struct node *linklist;
插入操作:
//操作結果:在l中第i個節點位置之前插入新的資料元素e,l的長度加1
status listinsert(linklist *l,int i,elemtype e)
if(!p || j > i)
return error;
s = (linklist)malloc(sizeof(node));
s->data = e;
s->next = p->next;
p->next = s;
return ok;
}
刪除操作:
//操作結果:刪除ld第ige結點,並用e作為返回值,l的長度減1.
status listinsert(linklist *l,int i,elemtype e)
if(!(p->next) || j>i)
return error;
q = p->next;
p->next = q->next;
*e = q->data;
free(q);
return ok;
}
線性表中還包含有靜態鍊錶、雙向鍊錶、迴圈鍊錶等,有了上述基礎,實現比較簡單,此處不加贅述。 資料結構 線性表(順序表 鍊錶)
線性表 1 線性表是一種邏輯結構,表示一種一對一的邏輯關係,除首節點和尾節點,每個結點只有乙個前驅結點和乙個後繼結點 2 兩種實現的物理結構 順序儲存,鏈式儲存 順序表 1 定義 用一組位址連續的儲存單元,一次儲存線性表中的元素,使得邏輯位置相鄰的元素物理位置也相鄰。2 特點 順序表元素的位序從1開...
資料結構學習(一)線性表 順序表
線性表定義 線性表是由n個性質相同的資料元素組成的有序序列,n代表線性表長度。線性表內部節點都有且只有乙個直接前驅和直接後驅。eg 字串 pomme 構成線性表 p,o,m,m,e 根據線性表內的儲存形式可分為 順序表 和 鍊錶 兩種型別。1.1 順序表概念 用一組位址連續的儲存單元依次儲存各元素。...
資料結構(一) 線性表之單向鍊錶
線性表,linear list,是最基本 最簡單 最常用的一種資料結構。乙個線性表是n個具有相同特性的資料元素的有限序列,例如 a1,ai 1,ai,ai 1,an 表示乙個順序表,ai 1領先於ai,ai領先於ai 1,稱ai 1是ai的直接前驅元素,ai 1是ai的直接後繼元素。特別的,第乙個元...