線性表鏈式儲存結構及實現

2021-09-23 17:06:35 字數 2781 閱讀 7981

一、目的

掌握線性表的臉是儲存結構及運算

熟悉迴圈鍊錶及雙鏈表線性表的基本運算

二、內容

編寫乙個程式cdlinklist.cpp,實現迴圈雙鏈表的各種基本運算和整體建表演算法(假設迴圈雙鏈表的元素型別elemtype為char),並在此基礎上設計乙個主程式,完成如下功能:

(1)初始化迴圈雙鏈表h

(2)依次採用尾插法插入a,b,c,d,e元素

(3)輸出迴圈雙鏈表h

(4)輸出迴圈雙鏈表h長度

(5)判斷順序表h是否為空

(6)輸出迴圈雙鏈表h的第3個元素

(7)輸出元素a的位置

(8)在第4個元素位置上插入f元素

(9)輸出迴圈雙鏈表h

(10)刪除迴圈雙鏈表h的第3個元素

(11)輸出迴圈雙鏈表h

(12)釋放迴圈雙鏈表h

l3=(x1,y1,x2,y2,…,xm,ym,xm+1,…,xn)當m<=n時

l3=(x1,y1,x2,y2,…,xn,yn,yn+1,…,yn)當m>n時

l3仍採用單鏈表儲存,演算法的空間複雜度為o(1)。

三、源**

迴圈雙鏈表

#include#includetypedef char elemtype;

typedef struct dnode

dlinknode;

void createlistf(dlinknode *&l,elemtype a,int n)

s=l->next;

while(s->next!=null)

s=s->next;

s->next=l;

l->prior=s;

}void createlistr(dlinknode *&l,elemtype a,int n)

r->next=l;

l->prior=r;

}void initlist(dlinknode *&l)

void destroylist(dlinknode *&l)

free(pre);

}bool listempty(dlinknode *l)

int listlength(dlinknode *l)

return(i);

}void displist(dlinknode *l)

printf("\n");

}bool getelem(dlinknode *l,int i,elemtype &e)

else

if(p==null)

return false;

else

}}int locateelem(dlinknode *l,elemtype e)

if(p==l)

return 0;

else

return i;

}bool listinsert(dlinknode *&l,int i,elemtype e)

else if (i==1)

else

if(p==l)

return false;

else

}}bool listdelete(dlinknode *&l,int i,elemtype &e)

else

if(p==l)

return false;

else

}}int main()

單鏈表合併

#include#includetypedef char elemtype;

typedef struct lnode

linknode;

void createlistf(linknode *&l,elemtype a,int n)

}void createlistr(linknode *&l,elemtype a,int n)

r->next=null;

}void initlist(linknode *&l)

void destroylist(linknode *&l)

free(p);

}bool listempty(linknode *l)

int listlength(linknode *l)

return(i);

}void displist(linknode *l)

printf("\n");

}bool getelem(linknode *l,int i,elemtype &e)

if(p==null)

return false;

else

}int locateelem(linknode *l,elemtype e)

if(p==null)

return 0;

else

return i;

}bool listinsert(linknode *&l,int i,elemtype e)

if(p==null)

return false;

else

}bool listdelete(linknode *&l,int i,elemtype &e)

if(p==null)

return false;

else

}void merge(linknode *l1,linknode *l2,linknode *&l3)

r->next=null;

if(q!=null)p=q;

r->next=p;

}int main()

線性表鏈式儲存結構

include include 線性表鏈式儲存結構 typedef struct lnodelnode,linklist int initlist linklist l 初始化 int endinsert linklist l,int e p next s return 1 末尾插入元素 int g...

線性表鏈式儲存結構

為了表示每個資料元素ai與其直接後繼資料元素ai 1之間的邏輯關係,對資料元素ai來說,除了儲存其本身的資訊之外,還需儲存乙個指示其直接後繼的資訊 即直接後繼的儲存位置 我們把儲存資料元素資訊的域稱為資料域,把儲存直接後繼位置的域稱為指標域。指標域中儲存的資訊稱做指標或鏈。這兩部分資訊組成資料元素a...

線性表 鏈式儲存結構

1 線性表的鏈式儲存結構 每個元素多用乙個位置來存放指向下乙個元素位置的指標,依次類推,可以找到所有的元素。鏈式儲存中,除了要儲存資料本身外,還要儲存它的後繼元素的儲存位址 指標 資料域 儲存資料資訊的域 指標域 儲存直接後繼位置的域。這兩部分資訊組成資料元素稱之為儲存映像,節點node。鍊錶中每個...