本文介绍了我通讯录项目各个功能的编写过程以及大体思路。
1.头文件以及结构体的定义
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0
typedef char Elemtype;
typedef char Status;
typedef struct Node
{
Elemtype name[10];
Elemtype tel[12];
struct Node *next;
}Node,*Address_list;
2.初始化过程
申请头结点,使用malloc函数为头结点分配空间,让头指针指向头结点,头结点的指针域指向NULL。
为什么要申请头结点?
为了保证处理第一个节点(非头结点)和后面节点时候设计的算法相同,实现程序的高效性。
/************初始化****************/
Status Initaddress(Address_list *aptr)
{
Node *p=(Node *)malloc(sizeof(Node));//申请头结点
if(p==NULL)
return ERROR;
p->next=NULL;
*aptr=p;
return OK;
}
2.插入新节点(实现新建联系人功能)
第一步:申请一个新结点用于记录新联系人的信息
使用malloc函数,需要强制转换。
第二步:将这个新结点插入到链表的最后
新申请一个tmp指针指向tmp头结点,用while语句是tmp指针后移,直到链表尾部,即tmp->next的值为NULL时,进行 如下操作:
将tmp指向新申请的结点,新节点的指针域指向NULL。
Status Insert(Address_list aptr,Elemtype e[],Elemtype f[])
{
Node *p=(Node *)malloc(sizeof(Node));
if(p==NULL)
{
printf("堆空间已满\n");
return ERROR;
}
strcpy(p->name,e);
strcpy(p->tel,f);
Address_list tmp=aptr;
while(tmp->next!=NULL)
{
tmp=t