头指针指向,数据结构关于头指针和尾指针的问题

1,数据结构关于头指针和尾指针的问题两个凡是:凡是“L->head=..;”的语句,都是把头指针指向头的操作凡是“L->tail=..;”的语句,都是把尾指针指向尾的操作
2,队列的头指针指向的位置看实现编码的约定,如果是链表,队头和栈顶指针也许指向的是头结点,而并不是队头和栈顶元素的位置如果是顺序存储,队列和栈的下标也许是下一个位置,也有可能是前一个位置 , 这个都得看代码是怎样设定的循环队列的头指针指向是队首元素的前一个位置.队尾指针指向队尾元素.
3,在单链表中什么是头结点什么是头指针什么是首元结点头结点:在单链表的第一个结点之前附设一个结点,称为头结点头指针:指向链表中第一个结点(单链表由一个头指针唯一确定)的指针(指针指的是存储地址)首元结点:指链表中存储线性表中第一个数据元素a1的结点 。为了操作方便,通常在链表的首元结点之前附设一个结点,称为头结点.单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素 。a结点:数据元素的储存映象,包括数据域和指针域头结点:在单链表的第一个结点之前附设一个结点,成为头结点头指针:指向链表中第一个结点(单链表由一个头指针唯一确定)的指针(指针指的是存储地址)首元结点:指链表中存储线性表中第一个数据元素a1的结点 。为了操作方便,通常在链表的首元结点之前附设一个结点,称为头结点.【头指针指向,数据结构关于头指针和尾指针的问题】
4,队列中我书上写的是头指针指向排头元素的前一个位置尾指针指向和用法有关,当然一般倾向于头指下一个,尾指正,比较方便再看看别人怎么说的 。尾指针队尾还有元素么??这个东西见仁见智,没有一定之规,一般符合使用习惯就好 。头指针指向首元素的前一个位置,则在使用时必须先调用next,才能取得合法元素同理尾指针指向尾元素的下一个位置,在使用时必须先调用prev 。这样的用法有时候方便在while循环里使用,比如:Type* pItem = queue.Head(); while (pItem = pItem.Next()) // do something}如果是头指针指向首元素的话:Type* pItem = queue.Head(); while (pItem) // do something pItem = pItem.Next();}5,头指针指向单链表的末尾创建链表下面的程序是单链表的建立与输出,都有详细的注释 , 相信你能看的懂但要想学习链表必须得掌握了一定的C语言基础下面这个链表的作用是建立5个结点的单链表,5个结点的值输入以后,依次输出各个结点的值#include#include //链表的建立与输出 struct node//定义结点的类型 { int num,score; node*link; }; void main() { node*creat(int n);//函数原型声明 void print(node*h);//函数原型声明 node*head=0;//定义链头指针并初始化 head=creat(5);//调用creat函数创建链表 print(head);//调用print函数输出链表 } node*creat(int n) { node*h=0,*p,*q; int i; for(i=1;i<=n;i++) { q=(node*)malloc(sizeof(node));//分配一个结点空间 scanf("%d%d",&q->num,&q->score);//输入新结点的值 q->link=0;//新结点的指针域置0 if(h==0) h=q;//第一个结点作为链头结点 else p->link=q;//新结点添加到链表的末尾 p=q; } return h;//返回链头指针 } void print(node*h)//链表输出函数的定义 { while(h)//当指针h非空时输出h所指结点的值 { printf("num=%d\tscore=%d\n",h->num,h->score); h=h->link;//使h指向下一个结点 } }

    推荐阅读