掌握以下內容
1、單鏈表的建立
2、將資料插入單鏈表
3、單鏈表合併
4、單鏈表去重
2020/10/20
typedef
char elem;
typedef
struct lnode
lnode;
//將結構體命名為lnode
int
initlist
(lnode *
&l) l -
> next =
null
;return1;
}
//求單鏈表的長度
intlinklist_length
(lnode *l)
return j;
}
//在第i個位置插入結點
bool
insertafter_linklist
(lnode *
&l, elem x,
int i)
if(i > n+1)
//判斷插入位置是否合法
p = l;
int j;
for(j =
0; p && j < i -
1; j++
) p = p -
> next;
//查詢到第i結點前一結點
s =(lnode*
)malloc
(sizeof
(lnode));
if(s ==
null
)//判斷申請空間是否成功
return
false
; s -
> data = x;
s -> next = p -
> next;
p -> next = s;
return
true;}
}
void
list_sort
(lnode *
&l) p = p-
>next;
//將p移至下乙個位置}}
}
void
del_sam
(lnode *l)
//去重
else
//如果相等就移至下乙個結點
} p1 -
> next =
null
;//在最後加上null,使其成為完整鍊錶
}
lnode*
mesh_linklists
(lnode *l1, lnode *l2)
//l1和l2為遞增序列,都有頭結點
int i =1;
p1 = l1 -
> next;
p2 = l2 -
> next;
while
(p1 && p2)
//如果l1 -> next與l2 -> next均不為空,執行迴圈
else
}//長鍊表較短鍊錶多出的部分接在l3鍊錶的後面
while
(p1)
//l1較長時
while
(p2)
//l2較長時
del_sam
(l3)
;//去除重複資料
return l3;
}
//輸出線性表
void
print_linklist
(lnode *l)
printf
("\n");
}
#include
"linklist.cpp"
intmain()
; elem b[10]
=;int i;
lnode *l1,
*l2,
*l3;
initlist
(l1)
;initlist
(l2)
;for
(i =
0; a[i]
; i++
)//將
for(i =
0; b[i]
; i++
)printf
("原 集 合a:");
print_linklist
(l1)
;printf
("原 集 合b:");
print_linklist
(l2)
;list_sort
(l1)
;list_sort
(l2)
;printf
("有序集合a:");
print_linklist
(l1)
;printf
("有序集合b:");
print_linklist
(l2);
l3 =
mesh_linklists
(l1, l2)
;printf
("集合的並c:");
print_linklist
(l3)
;return0;
}
#include
#include
#include
typedef
char elem;
typedef
struct lnode
lnode;
//將結構體命名為lnode
//單鏈表初始化
intinitlist
(lnode *
&l) l -
> next =
null
;return1;
}//求單鏈表的長度
intlinklist_length
(lnode *l)
return j;
}//在第i個位置插入結點
bool
insertafter_linklist
(lnode *
&l, elem x,
int i)
if(i > n+1)
p = l;
int j;
for(j =
0; p && j < i -
1; j++
) p = p -
> next;
s =(lnode*
)malloc
(sizeof
(lnode));
if(s ==
null
)//判斷申請空間是否成功
return
false
; s -
> data = x;
s -> next = p -
> next;
p -> next = s;
return
true;}
void
del_sam
(lnode *l)
//去重
else
} p1 -
> next =
null;}
void
list_sort
(lnode *
&l) p = p-
>next;
//將p移至下乙個位置}}
}//集合並集
lnode*
mesh_linklists
(lnode *l1, lnode *l2)
//l1和l2為遞增序列,都有頭結點,將l2中的值按序插入l1中
int i =1;
p1 = l1 -
> next;
p2 = l2 -
> next;
while
(p1 && p2)
//如果l1 -> next與l2 -> next均不為空,執行迴圈
else
}//長鍊表較短鍊錶多出的部分接在l3鍊錶的後面
while
(p1)
//l1較長時
while
(p2)
//l2較長時
del_sam
(l3)
;//去除重複資料
return l3;
}//輸出線性表
如有錯誤,敬請斧正
線性表之單鏈表
cpp view plain copy linkedlist linc 2013.2.26 include include include define ok 1 define error 1 define ture 1 define false 0 struct node typedef stru...
線性表之單鏈表
零個或多個資料元素的有限序列,線性表中的元素是一對一的關係,除了第乙個元素和最後乙個元素外,其他元素都是首尾相接的。線性表有兩種儲存方式,一種是順序儲存結構,另一種是鏈式儲存結構。指用一段位址連續的儲存單元依次儲存線性表的資料元素。優點 無需為表示元素間的邏輯關係而增加額外的儲存空間 隨機查詢元素,...
線性表之單鏈表
template typenamet structnode 頭結點 如果鍊錶有頭節點,則鏈式結構中的第乙個節點稱為頭結點 其資料域可以儲存一些附加資訊,如鍊表長度 其指標域指向鍊錶中的第乙個節點。template class linklist linklist t a int n linklist ...