带头结点与不带头结点的单链表的区别?
来源:百度知道 编辑:UC知道 时间:2024/05/31 15:17:32
用实例说明,下面的程序在win-tc和tc2.0下都调试通过,其中tail=tail->next;tail->next=p;(就是生成带头节点的单链表),这两句改成注释中的那两句就会生成不带头结点的单链表,你自己对着程序画一画就明白了。
什么时候要使用带头节点的单链表?为了在第一个数据元素前面加入新元素或者删除第一个节点时头指针的值不变,在第一个数据元素前面要加一个所谓的头节点。
在带头节点的单链表中,头指针(head)只有一个域,即链指针,它指向头节点,头节点有两个域,一个是数据域,值为0(NULL),还有一个域,链指针,这个链指针指向单链表的第一个数据元素。
而在不带头结点的单链表中,头指针也只有一个链指针,但它指向单链表的第一个数据元素。现在你一定明白了吧。
/* 调试通过 */
/* 顺序查表程序 */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define NUM 4
struct chain
{
char name[20];
char city[20];
char sex[10];
char age[10];
char job[10];
struct chain *next;
};
struct chain *create();
struct chain *SequelSeach(struct chain *head,char name[]);
void print_data(struct chain *point);
struct chain Datas[NUM]=
{
"Sun","Wuhan","Male","24","student",NU