glxhyt
C++博客
::
首頁
::
新隨筆
::
聯系
::
聚合
::
管理
::
15 隨筆 :: 0 文章 :: 4 評論 :: 0 Trackbacks
<
2011年11月
>
日
一
二
三
四
五
六
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
給我留言
查看公開留言
查看私人留言
隨筆檔案
2013年5月 (2)
2012年5月 (1)
2012年2月 (1)
2011年11月 (5)
2010年10月 (1)
2010年9月 (1)
2010年8月 (4)
搜索
最新評論
1.?re: 【轉】C/C++開源項目中的100個Bugs | WHO1753
.
--zgpxgame
2.?re: 自己工作中犯的幾個小問題
可以把你遇到的問題描述的詳細點嗎?
--鐘謝偉
3.?re: 自己工作中犯的幾個小問題
評論內容較長,點擊標題查看
--郭龍
4.?re: 自己工作中犯的幾個小問題
評論內容較長,點擊標題查看
--鐘謝偉
閱讀排行榜
1.?[轉]二維數組和二級指針 (5602)
2.?一個簡單的用c++寫的log(1670)
3.?linux 下的一個程序代碼統計的程序(類圖,時序圖,測試例子,代碼,心得)(1541)
4.?以前的一些mfc的筆記(關于孫鑫的那本書)(1125)
5.?【轉】字符串查找算法總結(718)
評論排行榜
1.?自己工作中犯的幾個小問題(3)
2.?【轉】C/C++開源項目中的100個Bugs | WHO1753(1)
3.?【轉】字符串查找算法總結(0)
4.?著名的Josephus問題(0)
5.?一個簡單的用c++寫的log(0)
鏈表
越來越感到自己基礎差了
今天看到 李先靜老師 系統程序員成長計劃 那本書上寫道
編寫通用的鏈表的
于是自己練習寫了一下,主要是 void* --> int* int*--> void*
沒想到指針的生命周期,整暈了,調試了好久。
typedef struct tagNode_t
{
struct tagNode_t *pPre;
struct tagNode_t *pNex;
void * pData;
}Node_t;
主要是因為 當時把 void * pData;當成int一樣賦值
pTemp->pData = (void*)&i;
沒有考慮到i的生命周
//
編寫通用的鏈表的定義
//
1
#if
0
typedef
int
Type;
typedef
struct
tagNode_t
{
struct
tagNode_t
*
pstPre;
struct
tagNode_t
*
pstNex;
Type ElemType;
}
Node_t;
//
2 good
//
存入時拷貝一份數據,保存數據的指針和長度。
//
考慮到拷貝數據會帶來性能開銷,不合符C
//
語言的風格,而且C 語言中沒有構造函數,
//
實現深拷貝比較麻煩,所以在C 語言中以這種
//
實現的鏈表很少見
typedef
struct
tagNode_t
{
struct
tagNode_t
*
pstPre;
struct
tagNode_t
*
pstNex;
void
*
pData;
int
iLength;
}
Node_t;
#endif
//
3 best
/**/
/*
只是保存指向對象的指針,存取效率高,
是C語言中常見的做法。在存放整數時,
可以把void*強制轉換成整數使用,
以避免內存分配(在現實中,90%以上的情況,
鏈表都是存放結構的)。
*/
#include
<
iostream
>
using
namespace
std;
typedef
struct
tagNode_t
{
struct
tagNode_t
*
pPre;
struct
tagNode_t
*
pNex;
void
*
pData;
}
Node_t;
typedef
struct
tagList_t
{
Node_t pHead;
}
List_t;
#if
0
#define
LIST_OK 1
#define
LIST_NG 0
//
tagStautus_u
#endif
typedef
enum
tagStatusEnum
{
LIST_NG
=
0
,
LIST_OK,
}
StatusEnum;
//
typedef StatusEnum (pFun *)(void * data);
typedef StatusEnum (
*
pFun ) (
void
*
data);
#if
0
StatusEnum CreateList(Node_t
**
p ,
int
i);
#else
StatusEnum CreateList(Node_t
*
p ,
int
*
i);
#endif
StatusEnum PrintList(List_t
*
p, pFun print);
StatusEnum DeleteList(List_t
*
p);
StatusEnum PrintStatus(
void
*
p);
//
LIST_t list;
#if
0
StatusEnum CreateList(Node_t
**
p ,
int
i)
#endif
StatusEnum CreateList(Node_t
*
p ,
int
*
i)
{
Node_t
*
pTemp
=
new
Node_t;
pTemp
->
pPre
=
NULL;
pTemp
->
pNex
=
NULL;
pTemp
->
pData
=
i;
//
NULL List Insert
#if
0
if
(
*
p
==
NULL)
{
*
p
=
pTemp;
//
list.pHead = pTemp;
(
*
p)
->
pNex
=
NULL;
(
*
p)
->
pPre
=
NULL;
}
//
Tail Insert
//
pTemp->pNex = *p->pNex;
pTemp
->
pPre
=
*
p;
(
*
p)
->
pNex
=
pTemp;
//
pTemp->pNex->pPre = pTemp;
//
Move Tail
*
p
=
(
*
p)
->
pNex;
#endif
pTemp
->
pNex
=
(p)
->
pNex;
(p)
->
pNex
=
pTemp;
pTemp
->
pPre
=
p;
if
(NULL
!=
pTemp
->
pNex)
{
pTemp
->
pNex
->
pPre
=
pTemp;
}
return
LIST_OK;
}
int
main(
int
argc,
char
**
argv)
{
//
Node_t *pRoot = NULL;
List_t list;
(list.pHead).pPre
=
NULL;
(list.pHead).pNex
=
NULL;
(list.pHead).pData
=
NULL;
//
for (int i = 0; i < 5; ++ i)
//
{
//
CreateList(&pRoot, i);
#if
0
CreateList(
&
((list.pHead).pNex), i);
#endif
static
int
i
=
3
;
static
int
j
=
4
;
CreateList(
&
(list.pHead),
&
i);
CreateList(
&
(list.pHead),
&
j);
//
}
PrintList(
&
list, PrintStatus);
DeleteList(
&
list);
return
0
;
}
StatusEnum PrintList(List_t
*
p, pFun print)
{
Node_t
*
pTemp
=
p
->
pHead.pNex;
while
( NULL
!=
pTemp)
{
print(pTemp
->
pData);
pTemp
=
pTemp
->
pNex;
}
return
LIST_OK;
}
StatusEnum PrintStatus(
void
*
p)
{
//
cout<<"A "<<(int) (*p);
cout
<<
"
B
"
<<*
(
int
*
)p
<<
endl;
return
LIST_OK;
}
StatusEnum DeleteList(List_t
*
p)
{
Node_t
*
pTemp
=
p
->
pHead.pNex;
Node_t
*
pCur
=
NULL;
while
( NULL
!=
pTemp)
{
pCur
=
pTemp;
pTemp
=
pTemp
->
pNex;
delete pCur;
}
return
LIST_OK;
}
期
posted on 2011-11-27 16:02
郭龍
閱讀(299)
評論(0)
編輯
收藏
引用
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © 郭龍
国内精品久久久久影院薰衣草
|
久久天天躁狠狠躁夜夜96流白浆
|
久久综合伊人77777麻豆
|
久久精品夜色噜噜亚洲A∨
|
久久天天婷婷五月俺也去
|
国产精品美女久久久m
|
久久亚洲2019中文字幕
|
香蕉久久夜色精品升级完成
|
久久国产精品99精品国产987
|
久久久久久久久久免免费精品
|
av色综合久久天堂av色综合在
|
久久九九全国免费
|
久久久久亚洲av成人网人人软件
|
久久综合综合久久狠狠狠97色88
|
日韩久久无码免费毛片软件
|
无码久久精品国产亚洲Av影片
|
亚洲国产精品一区二区久久
|
久久人妻无码中文字幕
|
久久精品综合一区二区三区
|
99久久99久久精品免费看蜜桃
|
亚洲精品无码专区久久同性男
|
2022年国产精品久久久久
|
久久精品国产精品亚洲精品
|
99久久婷婷国产综合精品草原
|
精品久久久久久中文字幕大豆网
|
久久成人精品
|
国产精品一区二区久久精品无码
|
久久精品人人做人人妻人人玩
|
2021国内精品久久久久久影院
|
国产精品久久久久乳精品爆
|
99国产精品久久
|
精品国产VA久久久久久久冰
|
日产精品久久久一区二区
|
久久精品国产免费观看
|
久久这里的只有是精品23
|
亚洲精品tv久久久久
|
亚洲精品无码久久毛片
|
色99久久久久高潮综合影院
|
日韩久久无码免费毛片软件
|
久久夜色精品国产
|
国产精品成人久久久
|