解不开的是你 2015-11-09 06:05 采纳率: 100%
浏览 3280
已采纳

提领指向不完全类型的指针

#include
#include
#include
#include

#define ID_MAX 10
#define NAME_MAX 20
#define MOBILE_MAX 15
#define ADDRESS_MAX 100
#define COMP_TEL_MAX 15
#define MAX 100
#define FAILURE 0
#define SUCCESS 1

struct perison
{
char id[ID_MAX];
char name[NAME_MAX];
char mobileNum[MOBILE_MAX];
char address[ADDRESS_MAX];
char companyTel[COMP_TEL_MAX];
struct perison *prior;
struct perison *next;
};

enum option{INSERT,DELETE,DISPLAY,SEARCH,exit 1};

typedef struct perison Linklist;
typedef struct Linklist *Link;

void operation_Menu()
{
printf("\t\t|---------------------------|\n");
printf("\t\t|--------电子通讯录---------|\n");
printf("\t\t|---------------------------|\n");
printf("\t\t|(A)添加好友信息 |\n");
printf("\t\t|---------------------------|\n");
printf("\t\t|(B)列表好友信息 |\n");
printf("\t\t|---------------------------|\n");
printf("\t\t|(C)搜索好友 |\n");
printf("\t\t|---------------------------|\n");
printf("\t\t|(D)删除好友 |\n");
printf("\t\t|---------------------------|\n");
printf("\t\t|(E)退出通讯录 |\n");
printf("\t\t|---------------------------|\n");
}

int create_linklist(Link *head,char id[])
{
*head = (Link)malloc(sizeof(Linklist));

if(head == NULL)
{
    printf("MALLOC ERROR!");
exit 1;
}

else
{
    strcpy((*head)->id,id);
strcpy((*head)->name,"");
strcpy((*head)->mobileNum,"");
strcpy((*head)->address,"");
strcpy((*head)->companyTel,"");
}

(*head)->prior = *head;
(*head)->next = *head;

}

int get_option(char *opt)
{
if(strcmp(opt,"INSERT") == 0)
{
return INSERT;
}

if(strcmp(opt,"DISPLY") == 0);
{
    return DISPLAY;
}

if(strcmp(opt,"SEARCH") == 0);
{
    return SEARCH;
}

if(strcmp(opt,"DELETE") == 0);
{
    return DELETE;
}

if(strcmp(opt,"EXIT") == 0)
{
    return exit 1;
}

}

int insert_linklist(Link *head, Link *newnode)
{
if(*head == NULL || *newnode == NULL)
{
printf("创建人员节点内存失败!\n");
return 0;
}

Link temp = *head;

while(strcmp(temp->next->id,"") != 0)
{
    temp = temp->next;
}

(*newnode)->next = *head;
(*head)->prior = *newnode;
temp->next = *newnode;
(*newnode)->prior = temp;

return 1;

}

void search_linklist(Link *head)
{
char namei[NAME_MAX];

Link temp = *head;

printf("请输入你要查询的姓名:\n");
scanf("%s",namei);

while(strcmp(temp->name,namei) != 0)
{
    temp = temp->next;

if(strcmp(temp->name,namei) == 0)
{
    display_node(&temp);
}
else
{
    printf("没查找到此好友!");
    break;
}
}
break;

}

void delete_node(Link *head, char *namei)
{
Link temp = *head;

while(strcpy(temp->next->name,namei) != 0)
{
    temp = temp->next;
}
Link ptr = temp->next;
temp->next = ptr->next;
ptr->next->prior = temp;
free(ptr);
ptr = NULL;

}

void display_linklist(Link *head)
{
Link temp = *head;
temp = temp->next;

printf("_________________________________________________________________________\n");
printf("|  ID  |     NAME     |  MOBILENUM  |      ADDRESS       |  COMPANYTEL  |\n");
printf("|-----------------------------------------------------------------------|\n");

while(strcmp(temp->id,"") != 0)
{
    printf("%-6d|%-14d|%-13d|%-20d|%-14d\n",temp->id,temp->name,temp->mobileNum,temp->address,temp->companyTel);
printf("_________________________________________________________________________\n");
    temp = temp->next;
    printf("\n");
}
printf("\n");

}

void display_node(Link *node)
{
printf("_________________________________________________________________________\n");
printf("| ID | NAME | MOBILENUM | ADDRESS | COMPANYTEL |\n");
printf("|-----------------------------------------------------------------------|\n");
printf("%-6d|%-14d|%-13d|%-20d|%-14d\n",(*node)->id,(*node)->name,(*node)->mobileNum,(*node)->address,(*node)->companyTel);
}

int my_digit(char *str)
{
int flag = 1;

while(*str != '\0')
{
    str++;
if(*str >= '0' || *str <= '9')
{
    flag = 1;
}
else
{
    flag = 0;
}

if(flag == 1)
{
    return SUCCESS;
}
else
{
    return FAILURE;
}
}

}

int main()
{
int i;
int opt;
int result;
char option[MAX];
char idi[ID_MAX];
char namei[NAME_MAX];
char mobileNumi[MOBILE_MAX];
char addressi[ADDRESS_MAX];
char companyTeli[COMP_TEL_MAX];

Link head;
Link newnode;

operation_Menu();

create_linklist(&head);

#if 1
while(1)
{
    printf("请输入操作指令:\n");
scanf("%s",option);

    opt = get_option(option);

switch(opt)
{
    case INSERT:
    {
        while(1)
    {
        int resault;

        newnode = (Link)malloc(sizeof(Linklist));

        printf("\nID:");
        fflush(stdin);
        scanf("%s",idi);
        if(my_digit(idi) == FAILURE)
        {
            printf("请输入数字类型字符");
        }
        strcpy(newnode->id,idi);

        printf("\nNAME:");
        fflush(stdin);
        scnaf("%s",namei);
        strcpy(newnode->name,namei);

        printf("\nMOBILENNUM:");
        fflush(stdin);
        scnaf("%s",mobileNumi);
        strcpy(newnode->mobileNum,mobileNumi);

        printf("\nADDRESS:");
        fflush(stdin);
        scnaf("%s",addressi);
        strcpy(newnode->address,addressi);

        printf("\nCOMPANYTEL:");
        fflush(stdin);
        scnaf("%s",companyTeli);
        strcpy(newnode->companyTel,companyTeli);

        result = insert_linklist(&head, &newnode);

        if(result == 0)
        {
            printf("添加好友失败!");
        exit 0;
        }
        else
        {
            printf("添加好友成功!");
        }

        fflush(stdin);
        break;

    }break;
    }

        case DISPLAY:
    {
        display_linklist(&head);
    break;
    }

    case DELETE:
    {
        delete_node(&head, namei);    
    }

    case SEARCH:
    {
        search_linklist(&head);
    break;
    }

    default:
    {
       printf("请输入正确的指令:\n");
       break;
    }
}
}
#endif

return 0;

}

  • 写回答

4条回答 默认 最新

  • ysuwood 2015-11-09 08:25
    关注

    图片说明

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥20 fluent无法启动
  • ¥15 孟德尔随机化r语言运行问题
  • ¥15 pyinstaller编译的时候出现No module named 'imp'
  • ¥15 nirs_kit中打码怎么看(打码文件是csv格式)
  • ¥15 怎么把多于硬盘空间放到根目录下
  • ¥15 Matlab问题解答有两个问题
  • ¥15 LCD12864中文显示
  • ¥15 在使用CH341SER.EXE时不小心把所有驱动文件删除了怎么解决
  • ¥15 gsoap生成onvif框架
  • ¥15 有关sql server business intellige安装,包括SSDT、SSMS。