日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言数据结构——用链表实现一个简单的电话号码簿

發布時間:2023/12/20 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言数据结构——用链表实现一个简单的电话号码簿 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

用鏈表實現一個簡單的電話號碼簿

整體上用鏈表來實現簡易的電話號碼簿,所用數據的存儲結構是鏈式存儲結構,邏輯結構是線性結構。

**基本思路:**首先創建一個單鏈表,輸入數據組數,之后輸入相應組數的姓名與電話號碼;再按照需求選擇進行插入、刪除數據以及電話號碼簿的打印。

主函數里面調用創建鏈表函數(create_peo(LinkList &L,int n)),插入函數(insert_peo(LinkList &L,int i,LinkList &s))、刪除函數(delete_peo(LinkList &L,int i,LinkList &e))、打印函數(print_peo(LinkList &L))。

#include<stdio.h> #include<stdlib.h> #include<string.h>typedef char DataType; typedef struct Node{ //線性表的單鏈表存儲結構 struct {char name[20];char number[12];}data; //定義結構變量 char name[20];char number[12];struct Node *next; }LNode,*LinkList;void create_peo(LinkList &L,int n); //創建單鏈表 int insert_peo(LinkList &L,int i,LinkList &s); //插入個人信息 int delete_peo(LinkList &L,int i,LinkList &e); //刪除個人信息 void print_peo(LinkList &L); //打印 void exit_system(); //退出程序int main() {int choice;int n,i,j;LinkList p=NULL;LinkList L,s,e;while(1){printf("這是一個電話號碼管理系統\n");printf("1.創建鏈表\n");printf("2.插入個人信息\n");printf("3.刪除個人信息\n");printf("4.顯示當前鏈表\n");printf("0.退出\n");printf("********************\n");printf("請輸入功能序號\n");scanf("%d",&choice);switch(choice) {case 1:printf("輸入你想創建的數據組數:");scanf("%d",&n); create_peo(L,n);break;case 2:printf("請輸入需要插入的位置:");scanf("%d",&i); insert_peo(L,i,s); break;case 3:printf("輸入你想刪除的位置:"); scanf("%d",&i);delete_peo(L,i,e); break;case 4:print_peo(L);break;case 0:exit_system();break; default:printf("輸入有誤,請重新輸入:");break; }}return 0; } void create_peo(LinkList &L,int n) {//逆位序輸入 n個元素的值,建立帶表頭結點的單鏈線性表L LinkList p;int i;L=(LinkList)malloc(sizeof(LNode));L->next=NULL; //先建立一個帶頭結點的單鏈表 for(i=n;i>0;--i){p=(LinkList)malloc(sizeof(LNode)); //生成新結點 printf("請輸入聯系人姓名:");scanf("%s",p->data.name);printf("請輸入聯系人電話號碼:");scanf("%s",p->data.number); //輸入元素值 p->next=L->next;L->next=p; //插入到表頭 } } //create_L int insert_peo(LinkList &L,int i,LinkList &s) { //在帶頭結點的單鏈線性表 L中第i個位置之前插入元素 e LinkList p=L;int j=0;while(p&&j<i-1){p=p->next;++j;} //尋找第 i-1個結點 if(!p||j>i-1){printf("插入位置不合法!");exit (1);}else{s=(LinkList)malloc(sizeof(LNode)); //生成新結點 printf("請輸入需要插入的聯系人姓名:");scanf("%s",s->data.name);printf("請輸入需要插入的聯系人電話:");scanf("%s",s->data.number);s->next=p->next; //插入 L中 p->next=s;printf("您已添加成功!\n");}return 1; }int delete_peo(LinkList &L,int i,LinkList &e){//刪除第i個結點LinkList p=L,q;int j=0;while(p->next&&j<i-1){ //尋找第i個結點,并令p指向其前驅 p=p->next;++j;}if(!(p->next)||j>i-1){printf("刪除位置不合法");exit(1); }else{q=p->next;p->next=q->next;e=q;free(q);printf("您已刪除成功!\n");} }void exit_system() {printf("退出中.....\n");system("pause");exit(0); }void print_peo(LinkList &L) {//打印LinkList p;p=L;printf("姓名\t\t電話\n\n");while(p->next!=NULL){p=p->next;printf("%s\t%s\n",p->data.name,p->data.number);} }

①:選擇1:創建一個鏈表,創建三組數據,分別輸入這三組數據;再選擇4:顯示當前鏈表;

②:選擇2:在指定位置插入一組數據,輸入數據信息;再選擇4:顯示當前鏈表;

③:選擇3:在指定位置進行刪除操作;再選擇4:顯示當前鏈表。

------------------------------------------------END-------------------------------------------

總結

以上是生活随笔為你收集整理的C语言数据结构——用链表实现一个简单的电话号码簿的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。