C 언어 링크 는 간이 주소록 을 실현 한다.
링크 는 주소록 기능 을 실현 합 니 다.
1.C 추가(이름,전화 입력)
2.삭제--(이름 입력,이 사람 삭제)
3.조회--(모든 연락 처 를 직접 인쇄)
4.수정--(인명 입력,전화 수정)
실행 효과:
코드 는 주 함수 블록 과 링크 블록 으로 나 뉜 다.
Linklist.h
#ifndef LINKLIST_H_INCLUDED
#define LINKLIST_H_INCLUDED
//
typedef struct Node
{
char name[10];//
char data[12];//
struct Node* next;//
struct Node* prev;//
}Node;
//
typedef struct LinkList
{
Node* head;//
Node* tail;//
int len;//
}LinkList;
//
Node* creatNode();
//
void AddNode(LinkList* List,char* data,char* name);
//
int DeleteNode(LinkList* List,char* name);
//
void CheckList(LinkList* List);
//
int UpdataNode(LinkList* List,char* data,char* name);
#endif // LINKLIST_H_INCLUDED
Linklist.c
#include <stdio.h>
#include "LinkList.h"
#include <stdlib.h>
#include <string.h>
Node* creatNode()
{
//
Node* ptr=(Node* )malloc(sizeof(Node));
//
memset(ptr->data,0,sizeof(ptr->data));
memset(ptr->name,0,sizeof(ptr->name));
ptr->next=NULL;
ptr->prev=NULL;
return ptr;
}
void AddNode(LinkList* List,char* data,char* name)
{
Node* ptr=creatNode();
if(List->len==0)//
{
strcpy(ptr->data,data);
strcpy(ptr->name,name);
List->head=ptr;
List->tail=ptr;
List->len++;
}
else
{
List->len++;
strcpy(ptr->data,data);
strcpy(ptr->name,name);
ptr->prev=List->tail;
List->tail->next=ptr;
List->tail=ptr;
}
}
int DeleteNode(LinkList* List,char* name)
{
Node* ptr=List->head;
int it=1;
while(it<=List->len)
{
if(strcmp(ptr->name,name)==0)
{
if(it==List->len)//
{
ptr->prev->next=NULL;
List->tail=ptr->prev;
List->len--;
}
else if(it==1)//
{
ptr->next->prev=NULL;
List->head=ptr->next;
List->len--;
}
else
{
ptr->next->prev=ptr->prev;
ptr->prev->next=ptr->next;
List->len--;
}
return 1;
}
ptr=ptr->next;
it++;
}
return 0;
}
void CheckList(LinkList* List)
{
Node* ptr=List->head;
int it = 0;// ,
while(it<List->len)
{
printf("%s\t %s
",ptr->name,ptr->data);
ptr=ptr->next;
it++;
}
}
int UpdataNode(LinkList* List,char* data,char* name)
{
Node* ptr=List->head;
int it=1;
while(it<=List->len)
{
if(strcmp(ptr->name,name)==0)// ,
{
strcpy(ptr->data,data);
return 1;
}
ptr=ptr->next;
it++;
}
return 0;
}
main.c
#include <stdio.h>
#include "LinkList.h"
int main()
{
int choose;
LinkList list1 = {NULL,NULL,0};
// ,
AddNode(&list1,"15181512167","chen");
AddNode(&list1,"12345678910","li");
AddNode(&list1,"12456878216","zhang");
while(1)
{
printf("1. 2. 3. 4. 0.
");
scanf("%d",&choose);
switch(choose)
{
case 1:
{
char data[12];
char name[10];
printf(" : ");
scanf("%s",name);
printf(" : ");
scanf("%s",data);
AddNode(&list1,data,name);
printf("----------------
");
break;
}
case 2:
{
char name1[10];
CheckList(&list1);
printf(" : ");
scanf("%s",name1);
if(DeleteNode(&list1,name1))
{
printf("
");
}
else
{
printf("
");
}
printf("----------------
");
break;
}
case 3:
{
CheckList(&list1);
printf("----------------
");
break;
}
case 4:
{
char name[10];
char data[12];
CheckList(&list1);
printf(" : ");
scanf("%s",name);
printf(" :");
scanf("%s",data);
if(UpdataNode(&list1,data,name))
{
printf("
");
}
else
{
printf("
");
}
printf("----------------
");
break;
}
case 0:
{
printf("----------------
");
exit(0);
}
}
}
return 0;
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 언어 구현 천둥 제거 게임 상세 정보먼저 작은 메뉴를 표시하고 게임을 할지 여부를 선택하십시오.사용자가 종료를 선택하면 프로그램 실행이 끝나고, 사용자가 게임을 선택하면 지뢰 제거 위치 좌표를 입력하라는 메시지가 표시됩니다.사용자가 입력한 좌표가 바둑...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.