glxhyt
C++博客
::
首頁
::
新隨筆
::
聯系
::
聚合
::
管理
::
15 隨筆 :: 0 文章 :: 4 評論 :: 0 Trackbacks
<
2010年8月
>
日
一
二
三
四
五
六
25
26
27
28
29
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
31
1
2
3
4
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
給我留言
查看公開留言
查看私人留言
隨筆檔案
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.?[轉]二維數組和二級指針 (5610)
2.?一個簡單的用c++寫的log(1673)
3.?linux 下的一個程序代碼統計的程序(類圖,時序圖,測試例子,代碼,心得)(1548)
4.?以前的一些mfc的筆記(關于孫鑫的那本書)(1127)
5.?【轉】字符串查找算法總結(730)
評論排行榜
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
郭龍
閱讀(304)
評論(0)
編輯
收藏
引用
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © 郭龍
久久黄视频
|
一本大道久久东京热无码AV
|
免费久久人人爽人人爽av
|
色妞色综合久久夜夜
|
亚洲日本va中文字幕久久
|
国产精品99久久久久久宅男小说
|
国内精品伊人久久久影院
|
久久精品国产99久久无毒不卡
|
久久精品一区二区国产
|
精品久久综合1区2区3区激情
|
一级a性色生活片久久无少妇一级婬片免费放
|
伊人久久大香线蕉精品不卡
|
2020最新久久久视精品爱
|
亚洲国产成人久久一区WWW
|
亚洲午夜久久久
|
成人国内精品久久久久一区
|
国产综合成人久久大片91
|
亚洲色婷婷综合久久
|
蜜桃麻豆www久久国产精品
|
久久精品人人做人人爽电影蜜月
|
a级毛片无码兔费真人久久
|
久久精品人人做人人爽电影蜜月
|
精品久久久久久无码人妻蜜桃
|
一本色道久久99一综合
|
久久涩综合
|
国产欧美久久久精品
|
99精品久久精品一区二区
|
久久久国产一区二区三区
|
久久香综合精品久久伊人
|
久久久久久午夜精品
|
国产精品va久久久久久久
|
2021精品国产综合久久
|
午夜人妻久久久久久久久
|
久久夜色精品国产亚洲av
|
国产91久久综合
|
欧美日韩中文字幕久久伊人
|
久久久久亚洲精品无码蜜桃
|
怡红院日本一道日本久久
|
久久久久中文字幕
|
久久不射电影网
|
久久国产免费观看精品
|