#include <stdio.h>
#include <stdlib.h>
#define true 1
#define false 0
typedef struct
{
int data;//数据域
struct LNode *next;//指针域
}LNode,*LinkList;
LinkList InitList()
{
LinkList r= NULL;//头指针
LinkList p= NULL;//辅助指针,用于遍历链表插入新的结点
int num;
printf("请输入要插入的数值(输入-1结束):\n");
scanf("%d", &num);
while (num != -1)
{
LinkList newNode = (LinkList)malloc(sizeof(LNode));
newNode->data = num; // 设置新节点的数据域为输入的数值
newNode->next = NULL; // 将新节点的指针域置为NULL
if(r == NULL)//第一个结点的情况
{
r = newNode;
p = newNode;
}else{//其余结点存储情况
p->next = newNode;
p = newNode;
}
printf("请输入要插入的数值(输入-1结束):\n");
scanf("%d", &num);
}
return r;//返回一个头指针
}
//输出元素
void Print(LinkList *L)
{
LinkList temp = *L;
printf("表中的元素为:\n");
while(temp)
{
printf("%d ",temp->data);
temp = temp->next;
}
printf("\n");
}
int main(int argc, char const *argv[])
{
//结构体指针而非结构体变量,如果定义为Lnode则为一个结构体变量,存储在栈上,有内存空间,所以不需要申请空间就可以直接访问L->data
//而下面这种结构体指针的定义则需要申请一个空间进行。可以与v1版做对比
LinkList L = InitList();
Print(&L);
return 0;
}
单链表-不带头结点v2.0
最新推荐文章于 2024-07-24 17:54:05 发布