有不懂的可以问我,把自己练习编写的代码在这里和大家分享下。如有错误欢迎指正。
编写不易,喜欢的话,点个赞吧😄!
#include <stdio.h>
#include <stdlib.h>
#define N 5
//链表节点单元
typedef struct Link{
int value;//数据域
struct Link *next;//指针域
}link;
/********************
函数 DisplayLink:依次输出链表成员信息
参数1 int HeadNode:0表示传入链表是含头节点的链表,1表示传入链表是不含头节点的链表
参数2 link *L:链表L
********************/
void DisplayLink(int HeadNode,link *L){
if(!HeadNode)L=L->next;//如果存在头节点,头指针向后移动一位指向首元节点
//只要L指针指向的节点非Null,则打印链表成员。
while(L){
printf("%d ",L->value);
L=L->next;
}
printf("\n\n");
}
/********************
函数 InitLink:初始化长度为len的链表
参数1 int HeadNode:0表示建立有头节点链表,1表示建立无头节点链表
参数2 link **L:链表L
参数3 int len:链表容量
********************/
int InitLink(int HeadNode,link **L,int len){
link *p=NULL;//头指针
link *temp=(link *)malloc(sizeof(link));//临时指针,总是指向链表的最后一个节点
if(!temp){
//如果节点申请失败
printf("链表初始化失败!\n\n");
exit(1);//退出程序
}
temp->value=HeadNode;//若是头节点,该节点数据写0;否则默认首元节点,写1
temp->next=NULL;//指针域默认置空,表示该节点为当前链表的最后一个节点
p=temp;//头指针指向链表的第一个节点
for(int i=HeadNode+1;i<=len;i++){
link *new_link=(link *)malloc(sizeof(link));//申请新节点
if(!new_link){