有半年沒有用C寫代碼了,現在在學習數據結構,寫了點代碼,發現了很大的問題。一直以來我感覺自己C語言算不上精通,但是基本語法大多數也全都掌握的差不多了,但是今天寫代碼的時候,要通過scanf函數給一變量賦值時,居然忘寫 & 符號,這無異於啪啪給我兩巴掌啊,這么簡單的語法居然給忘記了,我相信也有不少人和我差不多,都是眼高手低的家伙,以為自己以前學過,就懶得在練習了,可是到真寫的時候還寫不出來。看來以后還是要多寫代碼才行,大家一起加油哦,好了不說了,上代碼了。
只是一段簡單的代碼希望和菜鳥一起學習,注釋不對的地方,請大牛指點。
還有就是這只是一個非循環單鏈表···········
/*
鏈表創建及遍歷
編譯環境:VC++ 6.0
編譯系統:windows XP SP3
*/
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
// 定義鏈表中的節點
typedef struct node
{
int member; // 節點中的成員
struct node *pNext; // 指向下一個節點的指針
}Node,*pNode;
// 函數聲明
pNode CreateList(); // 創建鏈表函數
void TraverseList(pNode ); // 遍歷鏈表函數
int main()
{
pNode pHead = NULL; // 定義初始化頭節點,等價於 struct Node *pHead == NULL
pHead = CreateList(); // 創建一個非循環單鏈表,並將該鏈表的頭結點的地址付給pHead
TraverseList(pHead); // 調用遍歷鏈表函數
return 0;
}
// 創建鏈表函數
pNode CreateList()
{
int i; // 用於下面循環
int len; // 用來存放有效節點的字數
int val; // 用於臨時存放用戶輸入的數據
pNode pHead = (pNode)malloc( sizeof(Node)); // 分配一個不存放有效數據的頭結點
pNode pTail = pHead; // 鏈表的最后一個節點
pTail->pNext = NULL; // 最后一個節點的指針置為空
printf( " 請輸入節點個數: ");
scanf( " %d ",&len);
for(i = 0; i < len; i++)
{
printf( " 第 %d 個節點的數值: ",i+ 1);
scanf( " %d ",&val);
pNode pNew = (pNode)malloc( sizeof(Node)); // 為節點分配空間
pNew->member = val; // 將用戶輸入的數據賦給節點的成員
pTail->pNext = pNew; // 將最后一個節點的指針指向下一個新的節點
pNew->pNext = NULL; // 將新節點中的指針置為空
pTail = pNew; // 將新節點賦給最后的一個節點
}
return pHead; // 返回頭節點
}
// 遍歷鏈表函數
void TraverseList(pNode pHead)
{
pNode p = pHead->pNext; // 將頭節點的指針給予臨時節點p
鏈表創建及遍歷
編譯環境:VC++ 6.0
編譯系統:windows XP SP3
*/
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
// 定義鏈表中的節點
typedef struct node
{
int member; // 節點中的成員
struct node *pNext; // 指向下一個節點的指針
}Node,*pNode;
// 函數聲明
pNode CreateList(); // 創建鏈表函數
void TraverseList(pNode ); // 遍歷鏈表函數
int main()
{
pNode pHead = NULL; // 定義初始化頭節點,等價於 struct Node *pHead == NULL
pHead = CreateList(); // 創建一個非循環單鏈表,並將該鏈表的頭結點的地址付給pHead
TraverseList(pHead); // 調用遍歷鏈表函數
return 0;
}
// 創建鏈表函數
pNode CreateList()
{
int i; // 用於下面循環
int len; // 用來存放有效節點的字數
int val; // 用於臨時存放用戶輸入的數據
pNode pHead = (pNode)malloc( sizeof(Node)); // 分配一個不存放有效數據的頭結點
pNode pTail = pHead; // 鏈表的最后一個節點
pTail->pNext = NULL; // 最后一個節點的指針置為空
printf( " 請輸入節點個數: ");
scanf( " %d ",&len);
for(i = 0; i < len; i++)
{
printf( " 第 %d 個節點的數值: ",i+ 1);
scanf( " %d ",&val);
pNode pNew = (pNode)malloc( sizeof(Node)); // 為節點分配空間
pNew->member = val; // 將用戶輸入的數據賦給節點的成員
pTail->pNext = pNew; // 將最后一個節點的指針指向下一個新的節點
pNew->pNext = NULL; // 將新節點中的指針置為空
pTail = pNew; // 將新節點賦給最后的一個節點
}
return pHead; // 返回頭節點
}
// 遍歷鏈表函數
void TraverseList(pNode pHead)
{
pNode p = pHead->pNext; // 將頭節點的指針給予臨時節點p
while(NULL != p) //節點p不為空,循環
{
printf("%d ",p->member);
p = p->pNext;
}
printf("\n");
return ;
}