你需要打好線性表的基礎 資料結構

2021-10-01 16:41:38 字數 2639 閱讀 9233

目錄

一、順序表

二、單鏈表

三、迴圈鍊錶和雙向鍊錶簡單介紹

【演算法步驟】

【演算法描述】

void initlist(sqlist &l)

【演算法步驟】

【演算法描述】

int getelem(sqlist l,int i,elemtype &e)

【演算法步驟】

【演算法描述】

int locateelem(sqlist l,elemtype e)

【演算法步驟】

【演算法描述】

void listinsert(sqlist &l,int i,elemtype e)

【演算法步驟】

【演算法描述】

void listdelete(sqlist &l,int i)

【演算法步驟】

【演算法描述】

void initlist(linklist &l)

【演算法步驟】

p指向下乙個結點

計數器j相應加1

【演算法描述】

int getelem(linklist l, int i, elemtype &e)

if(!p || j>i) return error; //第i個元素不存在

e=p->data; //取第i個元素,e帶回

return e;

}

【演算法步驟】

【演算法描述】

lnode *locateelem_l (linklist l,elemtype e)

【演算法步驟】

【演算法描述】

void listinsert(linklist &l,int i,elemtype e) //尋找第i−1個結點 

if(!p||j>i−1) return error; //插入位置不合理

s=new lnode; //生成新結點s

s->data=e; //將結點s的資料域置為e

s->next=p->next; //將結點s插入l中

p->next=s;

}

【演算法步驟】

【演算法描述】

void listdelete(linklist &l,int i,elemtype &e)

if(!(p->next)||j>i-1) return error; //刪除位置不合理

q=p->next; //臨時儲存被刪結點的位址,以備釋放空間

p->next=q->next; //修改前驅結點的指標域

delete q; //釋放刪除結點的空間

}

【演算法步驟】

【演算法描述】

void createlist_f(linklist &l,int n)

}

【演算法步驟】

【演算法描述】

void createlist_l(linklist &l,int n)

}

單鏈表迴圈條件:          單向迴圈鍊錶迴圈條件:

p!=null                             p!=l              (不帶頭結點) 

p->next!=null                   p->next!=l        (帶頭結點)

結構體:

typedef struct dulnodedulnode, *dlinklist

status listinsert_dul(dulinklist&l,int i,elemtype e)

status listdelete_dul(dulinklist &l,int i)

基礎資料結構 線性表實現

以下 是對基礎資料結構中的線性表的順序實現,在vs2012下沒問題 include define maxlength 20 struct list 增加元素 int insert list l,int e,int index l.data index e l.length return 1 刪除元素...

基礎資料結構 線性表 順序表

線性表是n個資料元素的有限序列,資料之間存在順序關係,一般同乙個線性表屬於同一類資料物件 例如a z的字母表 線性表存在唯一乙個首位元素和末位元素,除了第乙個元素和最後乙個元素,每個元素存在著乙個前驅和乙個後繼 a的後繼是b,b的前驅是a 線性表主要有順序表和煉表兩種儲存形式,線性表是一種邏輯結構,...

資料結構(線性表)

1.試寫一演算法,在無頭結點的動態單鏈表上實現線性表操作insert l,i,b 並和在帶頭結點的動態單鏈表上實現相同操作的演算法進行比較。status insert linklist l,int i,int b 在無頭結點鍊錶l的第 i個元素之前插入元素 belse insert 2.已知線性表中...