最优的赣州网站建设台州百度快照优化公司
链表是怎么发展来的
线性表:是n个具有相同特性的数据元素的有限序列。
链表:具有线性存储结构的线性表。
为什么需要使用链表?(链表是如何被设计出来的)
程序开发最重要的部分是如何在项目程序中找到一种合适的、好的数据表示方法,这样可以让程序设计起来更容易,数据处理算法更为简单。
C语言的内置数据类型有:简单变量、数组、指针、结构体、联合、枚举等。
找到正确的数据表示方法不仅是选择一种数据类型,而是要考虑进行哪些数据操作,要确定如何存储数据,如何访问数据,如何为数据类型定义有效的操作(增删查改)。
举例:创建通讯录
思考 应该使用什么数据形式存储信息?
由于通讯录的每个人的个人信息有多种,所以使用结构体来表示比较合适。
如何表示多个人?用结构体数组、动态数组还是其他形式。
每个人是否要按照首字母顺序排列?是否要用名字来查找通讯录里的人?
程序设计的需求(行为或操作将影响如何存储信息)
程序举例:
编写一个程序,输入某组织人员的名字和年龄(有多种信息),先从简单的开始。
#include <stdio.h>
#include <string.h>#define PNUM 100 //总人数
#define NAME_SIZE 20//人名字符大小typedef struct peoplecard
{char name[NAME_SIZE];int age;
}char* manage_gets(char str[],int len_limt);
int main(void)
{peoplecard peol[PNUM];//定义组织人员结构体数组int i,j;puts(“Enter first peol name”);//输入第一个人员的名字while((i < PNUM)&&( manage_gets(peol[i].name, NAME_SIZE)!=NULL) &&( peol[i].name[0]!=’\0’)){puts(“Enter your age <0-200>:”);scanf(“%d”,& peol[i++].age);while(getchar()!=’\n’){continue;}puts(“Enter next people name(empty line to stop):”);}if(i==0){puts(“No data enter!”);}else{printf(“ Here is the people list:\n”);for(j=0;j<i;j++)//是小于i而不是i+1,因为在前面i会多加一次。{printf(“people :%s, age:%d\n”, peol[j].name, peol[j].age);}printf(“end!\n”);}return 0;
}char* manage_gets(char str[],int len_limt)
{char* ret_val;char* find;ret_val = fgets(str,len_limt,stdin);if(ret_val){find = strchr(str,’\0’);if(find){*find = ‘\0’;}else{while(getchar()!=’\n’){continue;}}}return ret_val;
}