|
實(shí)現(xiàn)了單向鏈表的創(chuàng)建,節(jié)點(diǎn)插入,增加,數(shù)據(jù)填充等
圖片.PNG (14.31 KB, 下載次數(shù): 73)
下載附件
2017-1-3 21:16 上傳
源程序:
- //單向鏈表基本操作,包括創(chuàng)建,整體賦值,整體讀取,單個賦值,單個讀取等
- //已經(jīng)在VC6.0上運(yùn)行通過
- #include<stdio.h>
- #include<stdlib.h>
- typedef struct DataBuf
- {
- char Byte8;
- int Byte16;
- long Byte32;
- }DataBuf;
- DataBuf readbuf;
- //鏈表節(jié)點(diǎn)和要存儲的數(shù)據(jù)申明,要插入的數(shù)據(jù)都在這里添加即可
- typedef struct SingleListNode
- {
- //要插入的鏈表數(shù)據(jù)值
- char Byte8; //要插入數(shù)據(jù)(1byte)
- int Byte16; //要插入數(shù)據(jù)(2byte)
- long Byte32; //要插入數(shù)據(jù)(4byte)
- struct SingleListNode *next; //每個鏈表的節(jié)點(diǎn)
- }SingleListNode;
- typedef SingleListNode *SingleList; //鏈表指針類型定義
- /***********************************
- ** 名稱: SingleListNodeCreate
- ** 描述: 創(chuàng)建單向鏈表表頭節(jié)點(diǎn)
- ** 輸入?yún)?shù): 無
- ** 輸出參數(shù): 無
- ** 返回值: 鏈表頭指針
- *************************************/
- SingleList SingleListNodeCreate (void)
- {
- SingleList pHead = (SingleList)malloc(sizeof(SingleListNode)); //為鏈表表頭分配內(nèi)存空間,創(chuàng)建后次鏈表表頭將永遠(yuǎn)不會消失,地址賦給表頭指針
- pHead->next=NULL; //指針頭賦值為空
- return pHead; //返回鏈表表頭
- }
- /**************************************************************************
- ** 名稱: SingleListInsert
- ** 描述: 單向鏈表插入數(shù)據(jù)運(yùn)算
- ** 輸入?yún)?shù): SingleList pos: 要插入的鏈表表頭節(jié)點(diǎn)
- byte : 要插入的數(shù)據(jù)
-
- ** 輸出參數(shù): 無
- ** 返回值: 插入節(jié)點(diǎn)的指針
- ****************************************************************************/
- SingleList SingleListInsert(SingleList pos, char byte8,int byte16,int byte32)
- {
- SingleList ptr = (SingleList)malloc(sizeof(SingleListNode)); //為新創(chuàng)建的鏈表節(jié)點(diǎn)分配內(nèi)存
- ptr-> Byte8 = byte8; //插入數(shù)據(jù)
- ptr-> Byte16 = byte16;
- ptr-> Byte32 = byte32;
- ptr->next = pos->next; //指向下一個節(jié)點(diǎn)的
- pos->next = ptr; //把創(chuàng)建的節(jié)點(diǎn)指針傳給下一個節(jié)點(diǎn)。用于移動節(jié)點(diǎn)
- return ptr; //返回創(chuàng)建的鏈表節(jié)點(diǎn)的指針
- }
- /**************************************************************************
- ** 名稱: TargetNodeWriteData
- ** 描述: 向目標(biāo)節(jié)點(diǎn)寫入數(shù)據(jù)
- ** 輸入?yún)?shù): 鏈表頭指針,目標(biāo)結(jié)點(diǎn),要寫入的數(shù)據(jù)緩存區(qū)
- ** 輸出參數(shù): 無
- ** 返回值: 無
- ***************************************************************************/
- void WriteTargetNodeData(SingleList pHead,int TargetNode,DataBuf *writebuf)
- {
- unsigned int i;
- SingleList pos = NULL;
- pos = pHead;
- for(i=0;i<=TargetNode;i++)
- {
- pos = pos->next;
- }
- pos->Byte8 = writebuf->Byte8;
- pos->Byte16 = writebuf->Byte16;
- pos->Byte32 = writebuf->Byte32;
- }
- /*************************************************************
- ** 名稱: ReadTargetNodeData
- ** 描述: 讀指定節(jié)點(diǎn)的數(shù)據(jù)到緩沖區(qū)
- ** 輸入?yún)?shù): 單項(xiàng)鏈表頭指針,目標(biāo)節(jié)點(diǎn)的號數(shù)
- ** 輸出參數(shù): 無
- ** 返回值: 無
- **************************************************************/
- void ReadTargetNodeData(SingleList pHead,int TargetNode,DataBuf *readbuf)
- {
- unsigned int i;
- SingleList pos = NULL;
- pos = pHead; //頭節(jié)點(diǎn)賦值給
- for(i=0;i<=TargetNode;i++)
- {
- pos = pos->next;
- }
- readbuf->Byte8 = pos->Byte8; //讀出來鏈表中的數(shù)據(jù)值
- readbuf->Byte16 = pos->Byte16;
- readbuf->Byte32 = pos->Byte32;
- }
- /************************************
- ** 名稱: SingleListFree
- ** 描述: 釋放鏈表占用的空間
- ** 輸入?yún)?shù): pHead: 鏈表頭指針
- ** 輸出參數(shù): 無
- ** 返回值: 無
- *************************************/
- void SingleListFree (SingleList pHead)
- {
- SingleList p = pHead; //得到鏈表表頭指針
- while(p)
- {
- pHead = pHead->next; //節(jié)點(diǎn)順序移動
- free(p); //釋放指到的對應(yīng)節(jié)點(diǎn)的內(nèi)存
- p = pHead; //傳遞給下一個節(jié)點(diǎn)
- }
- }
- //先往鏈表中插入數(shù)字
- void main()
- {
- unsigned int i;
- SingleList pos = NULL; //定義鏈表節(jié)點(diǎn)
- SingleList pHead; //定義鏈表表頭節(jié)點(diǎn)
-
- pHead = SingleListNodeCreate (); //創(chuàng)建鏈表表頭并且返回節(jié)點(diǎn)指針
- pos = pHead; //頭節(jié)點(diǎn)賦值給節(jié)點(diǎn)
- for(i=0;i<100;i++)
- {
- pos = SingleListInsert (pos,i,i*100,i*1000); //給對應(yīng)鏈表節(jié)點(diǎn)中插入數(shù)據(jù)
- }
- pos= pHead; //再次回到鏈表頭節(jié)點(diǎn)
- pos = pos->next;
- while(pos)
- {
- printf("%d %d %d\n",pos->Byte8,pos->Byte16,pos->Byte32); //循環(huán)打印鏈表節(jié)點(diǎn)中的數(shù)據(jù)
- pos = pos->next; //節(jié)點(diǎn)順序移動
- }
- printf("Output end..........................................\n");
- ReadTargetNodeData(pHead,66,&readbuf); //讀出目標(biāo)節(jié)點(diǎn)的數(shù)據(jù)
- printf("%d %d %d\n",readbuf.Byte8,readbuf.Byte16,readbuf.Byte32); //打印出來
- readbuf.Byte8=123; //重新給緩沖區(qū)賦值
- readbuf.Byte16=234;
- readbuf.Byte32=456;
- WriteTargetNodeData(pHead,6,&readbuf); //寫入目標(biāo)節(jié)點(diǎn)數(shù)據(jù)
- ReadTargetNodeData(pHead,6,&readbuf); //讀出來目標(biāo)節(jié)點(diǎn)的數(shù)據(jù)
- printf("%d %d %d\n",readbuf.Byte8,readbuf.Byte16,readbuf.Byte32);
- SingleListFree (pHead); //釋放節(jié)點(diǎn)占用的內(nèi)存
- while(1)
- {;}
- }
復(fù)制代碼
0.png (60.17 KB, 下載次數(shù): 69)
下載附件
2017-1-6 00:59 上傳
全部代碼下載:
單向鏈表應(yīng)用_已在VC6.0上通過.rar
(189.55 KB, 下載次數(shù): 11)
2017-1-3 21:15 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|