最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言實(shí)現(xiàn)電話簿項(xiàng)目管理

 更新時(shí)間:2021年07月29日 10:02:15   作者:往明  
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)電話簿項(xiàng)目管理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C語言實(shí)現(xiàn)電話簿項(xiàng)目管理的具體代碼,供大家參考,具體內(nèi)容如下

1.前言

在C語言的學(xué)習(xí),經(jīng)常有一個(gè)需要完成的項(xiàng)目就是電話簿的管理,在剛學(xué)習(xí)玩C語言基本內(nèi)容后,面對(duì)這么多的項(xiàng)目需求往往無從下手,本文將一步一步完成電話簿的創(chuàng)建。本文提供一種思路,如有更好的實(shí)現(xiàn)歡迎討論。

2.實(shí)現(xiàn)功能

本電話簿需要實(shí)現(xiàn)的功能有
實(shí)現(xiàn)電話簿的初始創(chuàng)建
實(shí)現(xiàn)電話簿的后添加
實(shí)現(xiàn)電話簿的刪除
實(shí)現(xiàn)電話簿的查看(按鏈表的排序)
實(shí)現(xiàn)電話簿的查找(名字以及號(hào)碼)
實(shí)現(xiàn)電話簿的排序(名字以及號(hào)碼)

3.思路解析

3.1二級(jí)目錄實(shí)現(xiàn)電話簿的初始創(chuàng)建

創(chuàng)建電話簿需要知道要保存什么信息,這是用我們的結(jié)構(gòu)體來創(chuàng)建保存信息

typedef struct phone_book
{
 char job[30];//工作信息
 char number[20];//電話號(hào)碼
 char name[15];//名字拼音
 char email[30];//郵箱信息
 struct phone_book* next;//指向下一個(gè)節(jié)點(diǎn)
}phone_book;

由于電話簿沒有限定有多大,并且是動(dòng)態(tài)變化的,這時(shí)候用數(shù)組來保存信息顯然不合適,這時(shí)候就需要鏈表來實(shí)現(xiàn)。
在電話簿第一次運(yùn)行時(shí),里面沒有任何信息,我們需要來創(chuàng)建電話簿。我們需要三個(gè)指針來幫助我們解決問題。 其中一個(gè)是鏈表的頭指針,兩外兩個(gè)幫助我們開辟新的節(jié)點(diǎn)并指向下一個(gè)節(jié)點(diǎn)讓我們的鏈表接下去。

phone_book* head, * p1, * p2;
head = NULL;//頭指針初始化為空
p1 = (phone_book*)malloc(LEN);
p2 = p1;

完成指針的創(chuàng)建我們要輸入信息,就是下面這串代碼幫我們實(shí)現(xiàn),創(chuàng)建聯(lián)系人我不想一個(gè)一個(gè)輸入,就用一個(gè)循環(huán)讓它一直跑,直到名字輸入0結(jié)束。(沒有想到其他的好方法來結(jié)束欸~)
每輸入信息后要往鏈表里加入,用一個(gè)變量記錄聯(lián)系人數(shù)量,創(chuàng)建第一個(gè)是把它弄到頭指針里面去,后面的聯(lián)系人通過兩個(gè)指針處理接下去。

while (1)
 {
  printf("請(qǐng)輸入姓名(姓名為0時(shí)停止創(chuàng)建):"); gets_s(p1->name);
  if (strcmp(p1->name, "0") == 0) break;
  printf("請(qǐng)輸入電話號(hào)碼:"); gets_s(p1->number);
  printf("請(qǐng)輸入工作單位:"); gets_s(p1->job);
  printf("請(qǐng)輸入E-mail:"); gets_s(p1->email);
  n = n + 1;
  if (n == 1)
   head = p1;
  else
   p2->next = p1;
  p2 = p1;
  p1 = (phone_book*)malloc(LEN);
 }p2->next = NULL;
 return head;

3.2二級(jí)目錄實(shí)現(xiàn)電話簿的后添加

后添加的操作幾乎和創(chuàng)建一模一直,只是操作時(shí)為了方便把他們加到頭指針后面,所以這時(shí)候鏈表的排列并不是按照添加事件的順序了。(頭指針yyds)

3.3二級(jí)目錄實(shí)現(xiàn)電話簿的刪除

聯(lián)系人的刪除就有些難以理解了,不過也好理解。找到這個(gè)節(jié)點(diǎn)后,釋放它,在這之前要標(biāo)記它前一個(gè)節(jié)點(diǎn)后一個(gè)節(jié)點(diǎn),讓它倆連接起來。直接上代碼。
通過查找我們發(fā)現(xiàn)要?jiǎng)h除節(jié)點(diǎn)p,如果要?jiǎng)h除的人正好在第一個(gè),直接把頭指針接到后面,如果不是,就讓p1和p后面的節(jié)點(diǎn)相連,并且釋放p

phone_book* p = head, * p1;//p1是p的前一個(gè)節(jié)點(diǎn)
  if (p == head)
  {
   head = p->next;
   free(p);
  }
  else
  {
   p1->next = p->next;
      free(p);
  }

3.4二級(jí)目錄實(shí)現(xiàn)電話簿的查找

只需要比較信息即可實(shí)現(xiàn),不過分為按名字和號(hào)碼來實(shí)現(xiàn),這就需要三個(gè)小函數(shù)來實(shí)現(xiàn)看代碼即可理解

3.5二級(jí)目錄實(shí)現(xiàn)電話簿的查找

只需要比較信息即可實(shí)現(xiàn),不過分為按名字和號(hào)碼來實(shí)現(xiàn),這就需要三個(gè)小函數(shù)來實(shí)現(xiàn)看代碼即可理解

3.6二級(jí)目錄實(shí)現(xiàn)電話簿的排序

只需要比較信息即可實(shí)現(xiàn),不過分為按名字和號(hào)碼來實(shí)現(xiàn),這就需要三個(gè)小函數(shù)來實(shí)現(xiàn)看代碼即可理解

4.源代碼及注釋

#define _CRT_SECURE_NO_WARNINGS
#include<string.h> 
#include<stdio.h> 
#include<stdlib.h> 
#include<malloc.h> 
typedef struct phone_book
{
 char job[30];
 char number[20];
 char name[15];
 char email[30];
 struct phone_book* next;
}phone_book;
#define LEN sizeof(phone_book) 
phone_book* creat_list()
{
 phone_book* head, * p1, * p2;
 char name[15];
 int n = 0;
 head = NULL;
 p1 = (phone_book*)malloc(LEN);
 p2 = p1;
 while (1)
 {
  printf("請(qǐng)輸入姓名(姓名為0時(shí)停止創(chuàng)建):"); gets_s(p1->name);
  if (strcmp(p1->name, "0") == 0) break;
  printf("請(qǐng)輸入電話號(hào)碼:"); gets_s(p1->number);
  printf("請(qǐng)輸入工作單位:"); gets_s(p1->job);
  printf("請(qǐng)輸入E-mail:"); gets_s(p1->email);
  n = n + 1;
  if (n == 1)
   head = p1;
  else
   p2->next = p1;
  p2 = p1;
  p1 = (phone_book*)malloc(LEN);
 }p2->next = NULL;
 return head;
}//鏈表創(chuàng)建函數(shù) 
void print_list(phone_book* head)
{
 void menu();
 int n = 0;
 printf("現(xiàn)在通訊錄中有如下成員:");
 while (head != NULL)
 {
  printf("\n名字:"); puts(head->name);
  printf("\n電話號(hào)碼:"); puts(head->number);
  printf("\n工作單位:"); puts(head->job);
  printf("\nE-mail:"); puts(head->email);
  putchar('\n');
  head = head->next;
  n++;
  if (n % 8 == 0)
  {
   printf("按回車鍵顯示下一頁");
   getchar();
   system("cls");
   menu();
  }
 }
 printf("總共%d個(gè)聯(lián)系人\n", n);
}
int length(phone_book* head)
{
 int n = 0;
 phone_book* p;
 p = head;
 while (p != NULL)
 {
  p = p->next; n++;
 }
 return n;
}//判斷聯(lián)系人個(gè)數(shù)
void sortbynumber(phone_book* head)
{
 void menu();
 int n = length(head);
 int i, j;
 phone_book temp, * p;
 p = head;
 phone_book a[1000];
 for (i = 1; i <= n; i++)
 {
  strcpy(a[i].name, p->name);
  strcpy(a[i].number, p->number);
  strcpy(a[i].job, p->job);
  strcpy(a[i].email, p->email);
  p = p->next;
 }
 for (i = 1; i <= n - 1; i++)
 {
  for (j = 1; j <= n - i; j++)
  {
   if (strcmp(a[j].number, a[j + 1].number) > 0)

   {
    temp = a[j];
    a[j] = a[j + 1];
    a[j + 1] = temp;
   }
  }
 }
 printf("現(xiàn)在通訊錄中有如下成員:");
 for (i = 1; i <= n; i++)
 {
  printf("\n名字:"); puts(a[i].name);
  printf("\n電話號(hào)碼:"); puts(a[i].number);
  printf("\n工作單位:"); puts(a[i].job);
  printf("\nE-mail:"); puts(a[i].email);
  putchar('\n');
  if (i % 8 == 0)
  {
   printf("按回車鍵顯示下一頁");
   getchar();
   system("cls");
   menu();
  }
 }
 printf("總共%d個(gè)聯(lián)系人\n", n);
}
void sortbyname(phone_book* head)
{
 void menu();
 int n = length(head);
 int i, j;
 phone_book temp, * p;
 p = head;
 phone_book a[100];
 for (i = 1; i <= n; i++)
 {
  strcpy(a[i].name, p->name);
  strcpy(a[i].number, p->number);
  strcpy(a[i].job, p->job);
  strcpy(a[i].email, p->email);
  p = p->next;
 }
 for (i = 1; i <= n - 1; i++)
 {
  for (j = 1; j <= n - i; j++)
  {
   if (strcmp(a[j].name, a[j + 1].name) > 0)
   {
    temp = a[j];
    a[j] = a[j + 1];
    a[j + 1] = temp;
   }
  }
 }
 printf("現(xiàn)在通訊錄中有如下成員:");
 for (i = 1; i <= n; i++)
 {
  printf("\n名字:"); puts(a[i].name);
  printf("\n電話號(hào)碼:"); puts(a[i].number);
  printf("\n工作單位:"); puts(a[i].job);
  printf("\nE-mail:"); puts(a[i].email);
  putchar('\n');
  if (i % 8 == 0)
  {
   printf("按回車鍵顯示下一頁");
   getchar();
   system("cls");
   menu();
  }
 }
 printf("總共%d個(gè)聯(lián)系人\n", n);
}//排序按照電話號(hào)碼
void sort_list(phone_book* head)
{
 void menu();
 if (head == NULL)
 {
  printf("電話簿為空,請(qǐng)重新創(chuàng)建!");
  return;
 }
 char a;
 printf("1,按電話號(hào)碼升序排序\n2,按姓名字母升序排序\n");
 printf("請(qǐng)選擇一種排序方法:");
 a = getchar();
 getchar();
 switch (a)
 {
 case'1':sortbynumber(head); break;
 case'2':sortbyname(head); break;
 default:printf("輸入有誤!\n"); break;
 }
}
void findbyname(phone_book* head)
{
 if (head == NULL)
 {
  printf("電話簿為空,請(qǐng)重新創(chuàng)建"); return;
 }
 char name[15]; printf("請(qǐng)輸入名字:");
 gets_s(name);
 while (strcmp(name, head->name) != 0)
 {
  head = head->next;
  if (head == NULL)
  {
   printf("電話簿未有此聯(lián)系人\n");
   return;
  }
 }
 printf("%s的電話號(hào)碼為:", name);
 puts(head->number);
 printf("\n工作單位:");
 puts(head->job);
 printf("\nE-mail:");
 puts(head->email);
}
void findbynumber(phone_book* head)
{
 if (head == NULL)
 {
  printf("電話簿為空,請(qǐng)重新創(chuàng)建");
  return;
 }
 char number[20];
 printf("請(qǐng)輸入電話號(hào)碼:");
 gets_s(number);
 while (strcmp(number, head->number) != 0)
 {
  head = head->next;
  if (head == NULL)
  {
   printf("電話簿未有此聯(lián)系人\n");
   return;
  }
 }
 printf("%s的主人為:", number);
 puts(head->name);
 printf("\n工作單位:");
 puts(head->job);
 printf("\nE-mail:");
 puts(head->email);
}
void find(phone_book* head)
{
 int n;
 printf("    1,通過名字查找\n    2,通過電話號(hào)碼查找\n    3,退出\n請(qǐng)選擇你需要的服務(wù):");
 scanf("%d", &n);
 getchar();
 while (1)
 {
  if (n == 1)
  {
   findbyname(head);
   printf("請(qǐng)選擇服務(wù)項(xiàng):");
   scanf("%d", &n);
   getchar();
  }
  if (n == 2)
  {
   findbynumber(head);
   printf("請(qǐng)選擇服務(wù)項(xiàng):");
   scanf("%d", &n);
   getchar();
  }
  if (n == 3)
   return;
  else
  {
   printf("輸入不正確!");
   printf("請(qǐng)選擇服務(wù)項(xiàng):");
   scanf("%d", &n);
   getchar();
  }
 }
}//查找聯(lián)系人 
void add_list(phone_book* head)
{
 phone_book* p1, * p2, * h;
 h = NULL;
 char name[15];
 p1 = (phone_book*)malloc(LEN);
 p2 = p1;
 int n = 0;
 while (1)
 {
  printf("請(qǐng)輸入名字(名字為0時(shí)停止)"); gets_s(p1->name);
  if (strcmp(p1->name, "0") == 0)break;
  printf("請(qǐng)輸入電話號(hào)碼:"); gets_s(p1->number);
  printf("請(qǐng)輸入工作單位:"); gets_s(p1->job);
  printf("請(qǐng)輸入E-mail:"); gets_s(p1->email);
  n = n + 1;
  if (n == 1)
   h = p1;
  else
   p2->next = p1;
  p2 = p1;
  p1 = (phone_book*)malloc(LEN);
 }
 p1 = head->next;
 head->next = h;
 p2->next = p1;
}//添加鏈表函數(shù) 
phone_book* delete_list(phone_book* head)
{
 char a[20];
 printf("請(qǐng)輸入聯(lián)系人名字或電話:");
 gets_s(a);
 if (head == NULL)
 {
  printf("電話簿為空,請(qǐng)重新創(chuàng)建");  return head;
 }
 phone_book* p = head, * p1;
 p1 = NULL;
 while (strcmp(a, p->name) != 0 && strcmp(a, p->number) != 0)
 {
  p1 = p;
  p = p->next;
  if (p == NULL)
  {
   printf("電話簿未有此聯(lián)系人\n");
   return head;
  }
 }
 printf("查找到了!");
 printf("\n名字:"); puts(p->name);
 printf("\n電話號(hào)碼:"); puts(p->number);
 printf("\n工作單位:"); puts(p->job);
 printf("\nE-mail:"); puts(p->email);
 putchar('\n'); char b[10]; printf("是否刪除該聯(lián)系人(Y/N)");
 gets_s(b);
 if (strcmp(b, "y") == 0 || strcmp(b, "Y") == 0)
 {
  if (p == head)
  {
   head = p->next;
   free(p);
  }
  else
  {
   p1->next = p->next; free(p);
  }
  printf("成功刪除!");
 }
 else if (strcmp(b, "n") == 0 || strcmp(b, "N") == 0)
  printf("取消刪除!");
 else
  printf("輸入錯(cuò)誤!");
 return head;
}//刪除鏈表函數(shù) 
void save_list(phone_book* head)
{
 FILE* fp;
 if ((fp = fopen("dianhuabu.dat", "wb")) == NULL)
 {
  printf("File cannot be opened\n");
  exit(0);
 }
 if (head == NULL)
 {
  printf("通訊錄為空\n");
  return;
 }
 phone_book* p1 = head;
 while (p1 != NULL)
 {
  if (fwrite(p1, LEN, 1, fp) != 1)
  {
   printf("cannot open file\n");
   return;
  }
  p1 = p1->next;
 }
 printf("保存完畢!\n"); fclose(fp);
}//文件寫入函數(shù) 
phone_book* load_list(phone_book* head)
{
 FILE* fp;
 if ((fp = fopen("dianhuabu.dat", "rb")) == NULL)
 {
  printf("電話簿為空,請(qǐng)重新創(chuàng)建\n");
  exit(0);
 }phone_book* p1, * p2;
 p1 = (phone_book*)malloc(LEN);
 if (fread(p1, LEN, 1, fp) == 0)
 {
  printf("電話簿為空,請(qǐng)重新創(chuàng)建");
  return head;
 }
 head = p1;
 p2 = p1; p1 = (phone_book*)malloc(LEN);
 while (fread(p1, LEN, 1, fp))
 {
  p2->next = p1;
  p2 = p1;
  p1 = (phone_book*)malloc(LEN);
 }
 p2->next = NULL;
 free(p1);
 return(head);
 fclose(fp);
}//文件讀取函數(shù) 
void menu()
{
 printf("           歡迎進(jìn)入電話簿系統(tǒng)            \n");
 printf("********************************************\n");
 printf("        1、創(chuàng)建電話簿(會(huì)將原有電話簿覆蓋)\n");
 printf("        2、查找聯(lián)系人               \n");
 printf("        3、添加聯(lián)系人               \n");
 printf("        4、刪除聯(lián)系人               \n");
 printf("        5、顯示聯(lián)系人               \n");
 printf("        6、查看電話簿(排序)         \n");
 printf("        7、退出系統(tǒng)                 \n");
 printf("********************************************\n");
}//菜單界面 
void main()
{
 system("cls");
 menu();//進(jìn)入菜單界面  
 printf("          請(qǐng)選擇你所需要的服務(wù):");
 int n;
 scanf("%d", &n);
 getchar();
 phone_book* head;
 head = NULL;
 while (1)
 {
  system("cls");
  menu();
  switch (n)
  {
  case 1:
  {
   head = creat_list();
   system("cls");
   menu();
   print_list(head);
   save_list(head);
   printf("********************************************\n");
   printf("\n如需要其他服務(wù),請(qǐng)重新輸入:");
   scanf("%d", &n);   getchar(); }break;//創(chuàng)建電話簿(創(chuàng)建鏈表、寫入文件,釋放鏈表) 
  case 2:
  {
   head = load_list(head);
   find(head);
   printf("********************************************\n");
   printf("\n如需要其他服務(wù),請(qǐng)重新輸入:");
   scanf("%d", &n);   getchar(); }break;//查找聯(lián)系人(讀入文件、查找函數(shù)、釋放鏈表) 
  case 3:
  {
   head = load_list(head);
   add_list(head);
   system("cls");
   menu();
   save_list(head);
   printf("********************************************\n");
   printf("\n如需要其他服務(wù),請(qǐng)重新輸入:");
   scanf("%d", &n);   getchar(); }break;//添加聯(lián)系人(讀入文件、添加鏈表、寫入文件、釋放鏈表) 
  case 4:
  {
   head = load_list(head);
   head = delete_list(head);
   save_list(head);
   printf("********************************************\n");
   printf("\n如需要其他服務(wù),請(qǐng)重新輸入:");
   scanf("%d", &n);
   getchar(); }break;//刪除聯(lián)系人(讀入文件,刪除鏈表、寫入文件、釋放鏈表)  
  case 5:
  {
   head = load_list(head);
   print_list(head);
   save_list(head);
  }
  case 6:
  {
   head = load_list(head);
   sort_list(head);
   printf("********************************************\n");
   printf("\n如需要其他服務(wù),請(qǐng)重新輸入:");
   scanf("%d", &n);   getchar(); }break;//查看電話簿(讀入文件,排序鏈表、釋放鏈表)   
  case 7:
  {   system("cls");   return; }break;//退出  
  default:
  {
   printf("\n輸入有誤,請(qǐng)重新輸入:");
   scanf("%d", &n);
   getchar();
  }break;
  }
 }
}

5結(jié)束語

以上就是電話簿管理完全過程,歡迎探討。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++在成員函數(shù)中使用STL的find_if函數(shù)實(shí)例

    C++在成員函數(shù)中使用STL的find_if函數(shù)實(shí)例

    這篇文章主要介紹了C++在成員函數(shù)中使用STL的find_if函數(shù)實(shí)例,包括了STL中find_if函數(shù)的具體用法及相關(guān)的完整實(shí)例,非常具有參考借鑒價(jià)值,需要的朋友可以參考下
    2014-10-10
  • C語言異或校驗(yàn)算法的項(xiàng)目實(shí)現(xiàn)

    C語言異或校驗(yàn)算法的項(xiàng)目實(shí)現(xiàn)

    異或校驗(yàn)算法(XOR校驗(yàn))是一種簡(jiǎn)單的校驗(yàn)算法,用于檢測(cè)數(shù)據(jù)在傳輸或存儲(chǔ)過程中是否發(fā)生了錯(cuò)誤,本文主要介紹了C語言異或校驗(yàn)算法的項(xiàng)目實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • C語言結(jié)構(gòu)體定義的方法匯總

    C語言結(jié)構(gòu)體定義的方法匯總

    結(jié)構(gòu)體是一種工具,用這個(gè)工具可以定義自己的數(shù)據(jù)類型。下面通過本文給大家分享了C語言結(jié)構(gòu)體定義的方法匯總,需要的朋友參考下吧
    2017-12-12
  • C++?OpenCV裁剪圖片時(shí)發(fā)生報(bào)錯(cuò)的解決方式

    C++?OpenCV裁剪圖片時(shí)發(fā)生報(bào)錯(cuò)的解決方式

    在圖像處理中,我們經(jīng)常根據(jù)需要截取圖像中某一區(qū)域做處理,下面這篇文章主要給大家介紹了關(guān)于C++?OpenCV裁剪圖片時(shí)發(fā)生報(bào)錯(cuò)的解決方式,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • C語言實(shí)現(xiàn)掃雷游戲(初級(jí)版)

    C語言實(shí)現(xiàn)掃雷游戲(初級(jí)版)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)掃雷游戲初級(jí)版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • CMake的簡(jiǎn)單應(yīng)用

    CMake的簡(jiǎn)單應(yīng)用

    這篇文章主要介紹了CMake的簡(jiǎn)單應(yīng)用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 利用C語言實(shí)現(xiàn)n字棋游戲

    利用C語言實(shí)現(xiàn)n字棋游戲

    本文將利用C語言編寫一個(gè)n字棋游戲,和井字棋一樣,不過這個(gè)游戲你可以自定義棋盤的大小。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以嘗試一下
    2022-05-05
  • 線程崩潰不會(huì)導(dǎo)致?JVM?崩潰的原因解析

    線程崩潰不會(huì)導(dǎo)致?JVM?崩潰的原因解析

    網(wǎng)上看到一個(gè)很有意思的據(jù)說是美團(tuán)的面試題:為什么線程崩潰崩潰不會(huì)導(dǎo)致?JVM?崩潰,這個(gè)問題我看了不少回答,但都沒答到根本原因,所以決定答一答,相信大家看完肯定會(huì)有收獲,本文分以下幾節(jié)來探討,需要的朋友可以參考下
    2022-06-06
  • C語言實(shí)現(xiàn)制作通訊錄(新手推薦)

    C語言實(shí)現(xiàn)制作通訊錄(新手推薦)

    本文推薦給C語言學(xué)習(xí)到結(jié)構(gòu)體的新手們,供其練習(xí)。這篇文章主要是利用C語言制作一個(gè)簡(jiǎn)單的通訊錄功能,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-09-09
  • c語言數(shù)據(jù)結(jié)構(gòu)之并查集 總結(jié)

    c語言數(shù)據(jù)結(jié)構(gòu)之并查集 總結(jié)

    一種用于管理分組的數(shù)據(jù)結(jié)構(gòu)。它具備兩個(gè)操作:(1)查詢?cè)豠和元素b是否為同一組 (2) 將元素a和b合并為同一組,需要的朋友可以參考下
    2018-08-08

最新評(píng)論

甘南县| 木兰县| 新和县| 东阳市| 鄂温| 湘西| 寿光市| 山东| 贡嘎县| 绥阳县| 清徐县| 东辽县| 青神县| 宣恩县| 大竹县| 洪江市| 河北区| 同江市| 巨鹿县| 库车县| 新野县| 新绛县| 天台县| 沙湾县| 奉节县| 南部县| 淅川县| 竹北市| 义马市| 庄河市| 普兰县| 烟台市| 石柱| 庄河市| 西林县| 万全县| 枝江市| 清新县| 抚松县| 诏安县| 荆州市|