2 1 動態單鏈表

2021-09-29 11:50:27 字數 3076 閱讀 7969

2.1 動態單鏈表

單鏈表:每個結點只包含乙個指標域的鍊錶

main.c

#include

#include

//#include "sequentialstorage.h"

#include

"linkstorage.h"

intmain

(int argc,

const

char

* ar**)

common.h(common.c是空的)
#ifndef common_h

#define common_h

#include

#include

typedef

int elemtype;

typedef

int status;

#endif

/* common_h */

linkstorage.h
//

// linkstorage.h

// ctest

//// created by macvivi on 2019/10/30.

////鏈式儲存(鏈式線性表)

#ifndef linkstorage_h

#define linkstorage_h

#include

#include

"common.h"

//28頁

typedef

struct lnode lnode, linklist;

//鏈式線性表測試**

void

linkstoragetest

(void);

//遍歷鍊錶

void

bianlils

(linklist *l)

;//建立乙個帶頭結點的單鏈表 30頁 演算法2.10

linklist *

createlist_l

(int n)

;//獲取鍊錶中第i個元素的值 29頁

elemtype getelem_l

(linklist *l,

int i)

;//在單鏈表l中第i個位置之前插入元素e 29頁 演算法2.8

status listinsert_l

(linklist *l,

int i, elemtype e)

;//在帶頭結點的單聯表l中,刪除第i個元素,並返回其值 30頁 演算法2.9

elemtype listdelete_l

(linklist *l,

int i)

;//合併單鏈表 31頁 演算法2.11 以演算法2.1為例

linklist *

mergelist_l

(linklist *la,linklist *lb)

;#endif

/* linkstorage_h */

linkstorage.c
//

// linkstorage.c

// ctest

//// created by macvivi on 2019/10/30.

//#include

"linkstorage.h"

void

linkstoragetest

(void

)linklist *

mergelist_l

(linklist *la,linklist *lb)

else

} pc->next = pa?pa:pb;

//插入剩餘段

free

(lb)

;//釋放lb的頭結點

return la;

}elemtype listdelete_l

(linklist *l,

int i)if(

!(p->next)

|| j > i-1)

//刪除並釋放結點

linklist *q = p->next;

p->next = q->next;

elemtype e = q->data;

free

(q);

return e;

}status listinsert_l

(linklist *l,

int i, elemtype e)if(

!p || j > i-1)

linklist *s =

(linklist*

)malloc

(sizeof

(lnode));

s->data = e;

s->next = p->next;

p->next = s;

return1;

return0;

}elemtype getelem_l

(linklist *l,

int i)if(

!p || j>i)

return p->data;

}void

bianlils

(linklist *l)

printf

("---------\n");

}linklist*

createlist_l

(int n)

return l;

}

列印結果:
hello, world!

101102

103---------

102--------

101102

9103

---------

103---------------

101102

9---------

兩個單鏈表的合併35

811---------26

891115

20---------23

5688

9111115

20---------

program ended with exit code: 0

用單鏈表實現演算法2 1

algo2 12.cpp 用單鏈表實現演算法2.1,僅有4句與algo2 1.cpp不同 include c1.h typedef int elemtype include c2 2.h 此句與algo2 1.cpp不同 因為採用不同的結構 include bo2 2.cpp 此句與algo2 1....

2 1單鏈表的基本操作

date 2017 2 24 author sedate description 單鏈表的基本操作 include include include include using namespace std define int min 0x80000000 define ok 1 define err...

C 動態單鏈表基礎

這篇部落格主要是帶助教,好多學生提問了,就參考一篇部落格稍微修改了一下 這裡我只用乙個簡單的例子 線性單向鍊錶為例,說明c語言是如何實現該結構的。鍊錶的元素是由結構體來實現struct student p。結構體中有乙個成員是結構體指標struct student next,而這個結構體指標的型別和...