C語(yǔ)言基于單鏈表實(shí)現(xiàn)通訊錄功能
本文實(shí)例為大家分享了C語(yǔ)言基于單鏈表實(shí)現(xiàn)通訊錄功能的具體代碼,供大家參考,具體內(nèi)容如下
#include<stdio.h> #include<stdlib.h> #include<string.h> #pragma warning(disable:4996);//解決VS報(bào)嚴(yán)重性代碼錯(cuò)誤 typedef struct LNode { char name[20]; double ph_number; struct LNode* next; }LinkNode; //創(chuàng)建通訊錄 LNode* CreateList(LNode*& L) { LNode* s, * r; int n; L = (LNode*)malloc(sizeof(LNode)); r = L; printf("請(qǐng)輸入要?jiǎng)?chuàng)建聯(lián)系人的個(gè)數(shù):"); scanf("%d", &n); printf("\n"); for (int i = 0; i < n; i++) { s = (LNode*)malloc(sizeof(LNode)); printf("請(qǐng)輸入第%d個(gè)聯(lián)系人的姓名,電話:\n", i + 1); scanf("%s%lf", &s->name, &s->ph_number); printf("\n"); r->next = s; r = s; } r->next = NULL; return L; } //添加聯(lián)系人 void ListInsert(LNode*& L) { LNode* new_s, * r = L; while (r->next != NULL) { r = r->next; } new_s = (LNode*)malloc(sizeof(LNode)); printf("請(qǐng)輸入要添加的聯(lián)系人的姓名,電話:\n"); scanf("%s%lf", &new_s->name, &new_s->ph_number); printf("\n"); r->next = new_s; r = new_s; r->next = NULL; } //查找聯(lián)系人 bool Locate(LNode*& L) { LNode* p = L->next; char name_[20]; printf("請(qǐng)輸入要查找的聯(lián)系人的姓名:\n"); scanf("%s", &name_); printf("\n"); while (p != NULL && strcmp(p->name, name_) != 0)//注意判斷條件 { p = p->next; } if (p == NULL) return false; else return true; } //修改聯(lián)系人 bool ModifyList(LNode*& L) { LNode* p = L; char name_[20]; double ph_number_; printf("請(qǐng)輸入要修改的聯(lián)系人的姓名:\n"); scanf("%s", name_); printf("\n"); while (p != NULL && strcmp(p->name, name_) != 0)//注意判斷條件 { p = p->next; } if (p == NULL) return false; else { printf("請(qǐng)輸入修改后的電話號(hào)碼為:\n"); scanf("%lf", &ph_number_); printf("\n"); p->ph_number = ph_number_; return true; } } //刪除聯(lián)系人 bool ListDelete(LNode*& L) { LNode* p = L->next, * q = L; char name_[20]; printf("請(qǐng)輸入要?jiǎng)h除聯(lián)系人的姓名:\n"); scanf("%s", name_); printf("\n"); while (p != NULL && strcmp(p->name, name_) != 0)//注意判斷條件 { p = p->next; q = q->next; } if (p == NULL) return false; else { q->next = q->next->next; free(p); return true; } } //加載通訊錄 void DispList(LNode* L) { int i = 0; LNode* p = L->next; while (p != NULL) { printf("姓名:%s 電話:%.0lf\n", p->name, p->ph_number); p = p->next; i++; } } int main() { printf("*****************************************\n"); printf("* *\n"); printf("* 1:添加聯(lián)系人 *\n"); printf("* *\n"); printf("* 2: 查找聯(lián)系人 *\n"); printf("* *\n"); printf("* 3: 修改聯(lián)系人 *\n"); printf("* *\n"); printf("* 4: 刪除聯(lián)系人 *\n"); printf("* *\n"); printf("* 5: 加載通訊錄 *\n"); printf("* *\n"); printf("*****************************************\n"); printf("\n"); LNode* L = CreateList(L); int operand; printf("\n"); for (int i = 0; i < 5; i++) { printf("請(qǐng)輸入您要執(zhí)行操作的操作數(shù):\n"); scanf("%d", &operand); switch (operand) { case 1: ListInsert(L); break; case 2: if (Locate(L) == 1) { printf("找到該聯(lián)系人\n"); printf("\n"); break; } else { printf("未找到改聯(lián)系人\n"); printf("\n"); break; } case 3: if (ModifyList(L) == 1) { printf("修改成功\n"); printf("\n"); break; } else { printf("修改失敗\n"); printf("\n"); break; } case 4: if (ListDelete(L) == 1) { printf("刪除成功\n"); printf("\n"); break; } else { printf("刪除失敗\n"); printf("\n"); break; } case 5: DispList(L); break; default: printf("ERROR!!!\n"); } } return 0; }
運(yùn)行截圖
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Qt?timerEvent實(shí)現(xiàn)簡(jiǎn)單秒表功能
這篇文章主要為大家詳細(xì)介紹了Qt?timerEvent實(shí)現(xiàn)簡(jiǎn)單秒表功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08C/C++語(yǔ)言八大排序算法之桶排序全過(guò)程示例詳解
這篇文章主要為大家介紹了C/C++語(yǔ)言八大排序算法之桶排序算法過(guò)程的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-11-11C++ Boost Fusion創(chuàng)建異構(gòu)容器詳解
Boost.Fusion 使創(chuàng)建異構(gòu)容器成為可能。例如,您可以創(chuàng)建一個(gè)向量,其第一個(gè)元素是 int,第二個(gè)元素是字符串。此外,Boost.Fusion 提供了處理異構(gòu)容器的算法。您可以將 Boost.Fusion 視為異構(gòu)容器的標(biāo)準(zhǔn)庫(kù)2022-11-11C語(yǔ)言中關(guān)于庫(kù)函數(shù) qsort 快排的用法
快速排序Qsort是所有學(xué)習(xí)算法和數(shù)據(jù)結(jié)構(gòu)最基礎(chǔ)的一個(gè)部分,也是考試題和面試的一個(gè)小重點(diǎn)。本片文章帶你了解Qsort的詳細(xì)用法規(guī)則2021-09-09C語(yǔ)言實(shí)現(xiàn)餐飲管理與點(diǎn)餐系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)餐飲管理與點(diǎn)餐系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-01-01C語(yǔ)言的動(dòng)態(tài)內(nèi)存分配及動(dòng)態(tài)內(nèi)存分配函數(shù)詳解
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言的動(dòng)態(tài)內(nèi)存分配及動(dòng)態(tài)內(nèi)存分配函數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-03-03