一、線性表的定義
從邏輯結構的角度來講,線性表中各個元素之間是唯一的、並且有序排列的關係。
從儲存結構的角度來看,線性表的具體實現過程中可採用順序儲存結構和鏈式儲存結構。
順序儲存結構的線性表稱為順序表,鏈式儲存結構的線性表分為單鏈表和雙鏈表。
二、順序表
#include "stdafx.h"
#include "head.h"
using namespace std;
#define maxsize 100
//功能:順序表的線性儲存結構中存的內容
typedef struct
datatype;
//功能:順序表的線性儲存結構
typedef struct _seqlist
seqlist, *pseqlist;
//功能:標頭檔案包含
void initlist(pseqlistl);
bool
insertlist(pseqlist l, int i, datatype x);
void display(pseqlist l);
bool delete(pseqlist l, int i);
datatype getnode(pseqlist l, int i);
int findnode(pseqlist l, datatype* pnode);
int _tmain(int argc, _tchar* argv)
zeromemory(&node, sizeof(datatype));
strcpy(node.info, "hello2");
insertlist(&list, 6, node);
for (i = 7; i < 9; i++)
display(&list);
zeromemory(&node, sizeof(datatype));
strcpy(node.info, "hello2");
i = findnode(&list, &node);
return 0; }
//功能:順序表的初始化
void initlist(pseqlistl)
//功能:順序表的插入運算
//在表的第i個元素與第i+1個元素之間插入x, 第i+1個之後的元素全部後移一位
//a0 a1 a2 a3 ...
a(i-1)
ai
a(i+1) ... a(n-1)
//1
2 3 4
i i+1
n (len = n)
bool
insertlist(pseqlist l, int i, datatype x)
else if (i < 1 || i > (l->len + 1))
else
l->data[i-1] = x;
l->len++;
return true; }
} //功能:順序表的顯示
void display(pseqlist l)
for (i = 0; i < l->len; i++)
} //功能:順序表的刪除運算
//刪除表的第i個元素, 第i+1個之後的元素全部前移一位
//a0 a1 a2 a3 ...
a(i-1)
ai
a(i+1) ... a(n-1)
//1
2 3 4
i i+1
n (len = n)
bool delete(pseqlist l, int i)
else if (i < 1 || i > l->len )
else
l->len--;
return true; }
} //功能:按序號取節點
datatype getnode(pseqlist l, int i)
return *pdata = l->data[i-1]; }
//功能:節點查詢
int findnode(pseqlist l, datatype* pnode)
}return 0; }
線性表之順序表
資料結構草草學過,不過沒有認真運用過。雖然知道一些最為基本的抽象型別及一些常用操作,不過叫我把這些基本的演算法寫出來我也 是寫不出來的。因為常說資料結構 演算法是乙個程式設計師最基本的素質,所以這次認真加以複習。在複習的同時我盡量將自己學習的其他的 一些基本知識比如c 中的物件導向思想也引入進來,同...
線性表之順序表
線性表 我們都知道是一種常用的資料結構,也是歷來各種考試的重點。今天抽了一些時間把線性表做了總結。線性表是n個資料元素的乙個有限序列。用公式表示為 l a1,a2,a3,a4,an 因為線性表是乙個有限的序列,所以也如上面公式所示,它的各個元素是相繼排放的。那麼它的每個相連的兩項之間都是有乙個邏輯關...
線性表之順序表
線性表的操作 initlist l 初始化操作,建立乙個空的線性表l。listempty l 判斷線性表是否為空表,空返回true,否則返回false。clearlist l 將線性表清空。getelem l,i,e 將線性表l中的第i個位置元素值返回給e。listdelete l,i,e 刪除線性...