链表:利用非连续的存储空间存储成批数据的存储结构。
数组(静态、动态)
缺点:(1)需要连续的存储空间 (2)插入和删除效率较低
链表优点:(1)不需要连续空间 (2)插入和删除较高
术语:
节点:(结点) 链表中的单个数据的表现形式 数据域和指针域
首节点:存放第一个有效数据的节点。
尾节点:存放最后一个有效数据的节点。
头结点:首节点前边的那个节点
头指针:指向头节点的指针
结论:确定一个链表需要什么信息? 头指针
问题:处理一批整数7个,利用链表存储和处理。
定义链表节点:
struct node
{
int data;
struct node *next;
};
建立n个数据节点的链表:
struct node *createlist(int n)
{
创建一个头结点;
head,p,q指向头结点
循环n次{
创建一个p节点;存放数据;q->next=p;q=p;}
q->next=NULL;
return head;
}
*/
#include <stdio.h>
#include <malloc.h>
struct node
{
char name[20];
int score;
struct node *next;
};
//建立n个数据节点的链表
void createlist(struct node *&head,int n) //形参head是实参head的别名
{
int i;
struct node *p,*q;
p=(struct node *)malloc(sizeof(struct node)); //头节点
head=q=p; //头节点的地址放到别名head代表的单元 实质上就是实参head代表的单元
for(i=0;i<n;i++)
{
p=(struct node *)malloc(sizeof(struct node));
//scanf("%d",&p->data);
scanf("%s%d",p->name,&p->score); //注意
q->next=p; q=p;
}
q->next=NULL;
}
[1]
[2]
下一页