線性表單鏈式儲存結構的操作

2021-07-28 05:09:33 字數 1569 閱讀 8807

線性表的單鏈表儲存結構

typedef struct node

node;

typedef struct node *linklist;

單鏈表的讀取

/*初始條件:順序線性表l已存在且含有頭結點,1<=i<=listlength(l) 

操作結果:用e返回l中第i個資料元素的值*/

status getelem(linklist l,int i,elemtype *e)

if(!p||j>i) return error;

*e=p->data;

return ok;

}

單鏈表的插入

/*初始條件:順序線性表l已存在且含有頭結點,1<=i<=listlength(l) 

操作結果:在l中第i個結點位置之前插入新的資料元素e,l的長度加1*/

status listinsert(linklist *l,int i,elemtype e)

if(!p||j>i) return error;

//現在p指向第i-1個結點

s=(linklist)malloc(sizeof(node));//生成新的結點

s->data=e;

s->next=p->next;//先接上

p->next=s;//後斷開,接到新的結點上

}

單鏈表的刪除

/*初始條件:順序線性表l已存在且含有頭結點,1<=i<=listlength(l) 

操作結果:刪除l的第i個節點,並用e返回其值,l的長度減1*/

status listdelete(linklist *l,int i,elemtype *e)

if(!(p->next)||j>i) return error;

q=p->next;

p->next=q->next;//斷開

*e=q->data;//將q節點中的資料給*e

free(q);//釋放記憶體

return ok;

}

單鏈表的整表建立(頭插法與尾插法)

/*隨機產生n個元素的值,建立帶表頭結點的單鏈線性表l(頭插法)*/

void createlisthead(linklist *l,int n)

}

/*隨機產生n個元素的值,建立帶表頭結點的單鏈線性表l(尾插法)*/

void createlisttail(linklist *l,int n)

r->next=null;

}

單鏈表的整表刪除

/*初始條件:順序線性表l已存在,操作結果:將l重置為空表*/

status clearlist(linklist *l)

(*l)->next=null;

return ok;

}

線性表鏈式儲存結構

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。鍊錶中每個...