C語言基于單鏈表實現(xiàn)通訊錄功能
更新時間:2021年05月31日 15:54:05 作者:::..::…::
這篇文章主要為大家詳細介紹了C語言基于單鏈表實現(xiàn)通訊錄功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了C語言基于單鏈表實現(xiàn)通訊錄功能的具體代碼,供大家參考,具體內(nèi)容如下
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#pragma warning(disable:4996);//解決VS報嚴重性代碼錯誤
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("請輸入要創(chuàng)建聯(lián)系人的個數(shù):");
scanf("%d", &n);
printf("\n");
for (int i = 0; i < n; i++)
{
s = (LNode*)malloc(sizeof(LNode));
printf("請輸入第%d個聯(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("請輸入要添加的聯(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("請輸入要查找的聯(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("請輸入要修改的聯(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("請輸入修改后的電話號碼為:\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("請輸入要刪除聯(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("請輸入您要執(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;
}
運行截圖


以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++ Boost Fusion創(chuàng)建異構(gòu)容器詳解
Boost.Fusion 使創(chuàng)建異構(gòu)容器成為可能。例如,您可以創(chuàng)建一個向量,其第一個元素是 int,第二個元素是字符串。此外,Boost.Fusion 提供了處理異構(gòu)容器的算法。您可以將 Boost.Fusion 視為異構(gòu)容器的標準庫2022-11-11
C語言中關(guān)于庫函數(shù) qsort 快排的用法
快速排序Qsort是所有學(xué)習(xí)算法和數(shù)據(jù)結(jié)構(gòu)最基礎(chǔ)的一個部分,也是考試題和面試的一個小重點。本片文章帶你了解Qsort的詳細用法規(guī)則2021-09-09
C語言的動態(tài)內(nèi)存分配及動態(tài)內(nèi)存分配函數(shù)詳解
這篇文章主要為大家詳細介紹了C語言的動態(tài)內(nèi)存分配及動態(tài)內(nèi)存分配函數(shù),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03

