如何创建一个不带头结点的单链表?与带头节点的单链表有什么区别?并且,输出这个单链表?

2025-01-02 09:18:46
推荐回答(2个)
回答1:

1、结点类的实现:数据,指向下一个数据的指针,构造函数,如果数据类型是自己定义的,重载一些必需的函数。

2、链表类的实现:,构造函数,插入函数, 删除函数,判断是否为空函数。

3、构造函数的实现:头指针的定义。

4、插入函数的实现思路:判断是否在首位插入。

5、删除函数的实现思路:找到删除的结点,将后一个结点的地址交给前一个结点。

6、判断是否为空的实现思路:判断头结点是否为0。

回答2:

#include "Stdio.h"
#include "Conio.h"
#define NULL 0
typedef struct node{
int data;
struct node *next;
}linkedlode,*linklist;/*链表节点的数据结构*/
linklist L; /*全局定义*/
main()
{
void buildlist(); /*建立链表*/
void print(linklist);/*输出链表*/
buildlist();
print(L);
getch();
}
void buildlist()/*建立链表*/
{
int ch;
int i=0;
linklist p,q;
while(1)
{
printf("Input data(end of -100):");/*输出为-100结束*/
scanf("%d",&ch);
if(ch==-100)break;
p=(linkedlode *)malloc(sizeof(linkedlode));
p->next=NULL;
p->data=ch;
if(i==0) /*第一个节点*/
{
L=p;
q=p;
i++;
continue;
}
q->next=p; /*以后的节点*/
q=p;
}
}
void print(linklist L)/*输出链表*/
{
while(L)
{
printf("%5d",L->data);
L=L->next;
}

}