📄 c09_07.c
字号:
/*创建单向链表演示,其中函数 create()创建链表,其返回链表的头指针 */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define LEN sizeof(struct AddressList)
struct AddressList
{
char name[20]; /* 姓名 */
char telephone[12]; /* 电话 */
char e_mail[30]; /* Email地址 */
struct AddressList *next; /* 指向下一结点 */
};
struct AddressList * create(void); /* 创建链表,并返回表头指针 */
int main()
{
struct AddressList *h;
h = create();
return 0;
}
struct AddressList * create() /* 创建链表,并返回表头指针 */
{
struct AddressList *head; /* 表头 */
struct AddressList *p; /* 新建结点 */
struct AddressList *tail; /* 表尾结点 */
head = NULL; /* 还没有任何结点,表头为指向空 */
p = (struct AddressList *)malloc(LEN); /* 创建一个新结点p */
tail = p; /* 表尾p2也指向p */
printf("请输入结点数据:\n");
printf(" 姓名:");
gets(p->name);
while(strcmp(p->name,"")!=0) /* 假设name为空串表示输入结束 */
{
printf(" 电话:");
gets(p->telephone);
printf("Email地址:");
gets(p->e_mail);
if (head==NULL)
head = p; /* 第一个新建结点是表头 */
else
tail->next = p; /* 原表尾的下一个结点是新建结点 */
tail = p; /* 新建结点成为表尾 */
p = (struct AddressList *)malloc(LEN); /* 新建一个结点 */
printf("\n请输入下一个结点数据:\n");
printf(" 姓名:");
gets(p->name); /* 读入新建结点的通讯录数据 */
}
if (head==NULL) /*未输入任何数据*/
free(p);
else
{
free(p); /* 对于num=0的结点,未加入链表,应删除其空间 */
tail->next = NULL; /* 输入结束,表尾结点的下一个结点为空 */
}
printf("建立链表过程结束\n");
return (head); /* 返回表头指针 */
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -