C 언어 링크 는 간이 주소록 을 실현 한다.

6578 단어 C 언어통신 록
본 논문 의 사례 는 여러분 에 게 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; }
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기