一、简介:使用C语言创建含有头结点的单链表并打印
二、代码内容:
- 头文件:“stdlib.h” 为了使用”malloc()“函数;
- 结构体:LinkedList为指针类型,Node为结构体类型,使用typedef定义指针类型时,*在标识符前;
- 函数声明: void add(LinkedList head) ---> 尾插法构建单链表(带头结点),传入参数为链表头结点;void printf(const LinkedList head) --->打印单链表,传入参数为链表头结点;
- 测试用例:
- 使用Node head并调用add()函数;
- 使用LinkedList head并调用add()函数;
- 注:无论使用哪一种,必须对变量初始化,让其next域指向NULL。
5.代码实现:
void add(LinkedList head)
声明两个指针结点 node存储用户输入的整数,tail指向链表的尾结点。
void printf(const LinkedList head )
过于简单,这里不作太多阐述。
三、C语言代码 (可复制)
#include<stdio.h>
#include<stdlib.h>
typedef int E;
typedef struct _node {
E val;
struct _node *next;
}*LinkedList,Node;
//---- claim function
void add(LinkedList head);//尾插法构建单链表
void printf(const LinkedList head);//打印单链表
int main() {
/*
head.val=-1;
head.next=NULL;
add(&head);
printf(&head);*/
Node head;
LinkedList list;
list=(LinkedList)malloc(sizeof(Node));
list->val=-1;
list->next=NULL;
add(list);
printf(list);
return 0;
}
//打印链表
void printf(const LinkedList head){
Node *p=head->next;
while(p){
printf("%d->",p->val);
p=p->next;
}
printf("NULL\n");
}
//添加结点,尾插法
void add(LinkedList head) {
E number;
Node *node;
Node *tail=head;
if(head == NULL)
{
printf("Error:list is NULL!\n");
return;
}
printf("Enter an integer, ending with -1\n ");
do {
scanf("%d",&number);
if(-1 != number) {
node=(Node*)malloc(sizeof(Node));
node->val=number;
node->next=NULL;
tail->next=node;
tail=node;
}
} while(number != -1);
}