C 語言初學教材 - 第六章 雙重指標 範例程式






































C 語言初學教材 - 第六章 雙重指標 範例程式






雙重指標範例程式碼



#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define NAME_SIZE 15

// 記錄好友資料的結構
struct friendData {
char name[NAME_SIZE];
int age;
int sex;
int relation;
};

// 暫存在記憶體中的資料結構:鏈結串列
struct linkedListNode {
struct friendData data;
struct linkedListNode *nextPtr;
};

typedef struct linkedListNode LinkedListNode;

void addfriend(LinkedListNode **startPtr);
void printList2(LinkedListNode *currentPtr);

int main(void)
{
LinkedListNode *startPtr;
int i;

i = 0;
startPtr = NULL;
while (i < 5) {
addfriend(&startPtr);
i++;
}
printList(startPtr);

return 0;
}

void addfriend(LinkedListNode **startPtr)
{
LinkedListNode *newPtr, *currentPtr;
char fname[NAME_SIZE];
int fage, fsex, frelation;

// 向作業系統要求新的記憶體空間
newPtr = malloc(sizeof(LinkedListNode));

// 依序輸入好友資料
printf("n好友暱稱: ");
scanf("%s", fname);
printf("好友年齡: ");
scanf("%d", &fage);
printf("好友性別 - 0.女 1.男: ");
scanf("%d", &fsex);
printf("好友關係 - 0.家人 1.同學 2.朋友: ");
scanf("%d", &frelation);

// 將好友資料拷貝到剛才取得的記憶體空間之中
strcpy(newPtr->data.name, fname);
newPtr->data.age = fage;
newPtr->data.sex = fsex;
newPtr->data.relation = frelation;
newPtr->nextPtr = NULL;

// 將資料加入鏈結串列
if (*startPtr == NULL) {
*startPtr = newPtr;
}
else {
currentPtr = *startPtr;

while (currentPtr != NULL) {
if (currentPtr->nextPtr == NULL) {
currentPtr->nextPtr = newPtr;
break;
}

currentPtr = currentPtr->nextPtr;
}
}
}

void printList2(LinkedListNode *currentPtr)
{
if (currentPtr == NULL) {
printf("nn還沒有建立任何好友資料唷...nn");
}
else {
// 依序由鏈結串獵取出資料,然後印在螢幕上
printf("nn以下依好友名錄的儲存順序印出好友資料n");
printf(" 好友暱稱 - 年 齡 - 性 別 - 關 係n");
while (currentPtr != NULL) {
printf("%10s - ", currentPtr->data.name);
printf("%5d - ", currentPtr->data.age);
printf("%5s - ", currentPtr->data.sex ? "男" : "女");
printf("%s n", currentPtr->data.relation ? "同學或朋友" : "家人");

currentPtr = currentPtr->nextPtr;
}
}

}

/* 《程式語言教學誌》的範例程式
http://pydoing.blogspot.com/
檔名:listtestr.c
功能:示範鏈結串列的使用
作者:張凱慶
時間:西元2010年7月 */



程式說明及編譯執行,請參考













沒有留言:




















window.___gcfg = { 'lang': 'zh-TW' };





Popular posts from this blog

迅雷 Thunder 7.9.43.5054 免安裝版 (9.1.41.914 安裝版) - 支援BT下載的萬用 檔案下載工具

qBittorrent 4.1.1 免安裝中文版 - 取代uTorrent的BT下載器

Nhiều đồn đoán cho rằng bộ đồ "phá vỡ quy tắc" của Meghan Markle được lấy cảm hứng từ trang phục của Công nương Diana