#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct Node
{
int id;//数据域
struct Node* next;//指针域
}Node;
//创建头节点
//链表的头结点地址右函数值返回
Node* SListCreat()
{
Node* head = NULL;
//头结点作为标志位,不存储有效数据
head = (Node*)malloc(sizeof(Node));
if (head == NULL)
{
return NULL;
}
//给head的成员变量赋值
head->id = -1;
head->next = NULL;
Node* pCur = head;
Node* pNew = NULL;
int data;
while (1)
{
printf("请输入数据:");
scanf("%d", &data);
if (data == -1)//输入-1,推出
{
break;
}
//新节点动态分配空间
pNew = (Node*)malloc(sizeof(Node));
pNew->id = data;
pNew->next = NULL;
//链表建立关系
//当前节点的next指向pNew
pCur->next = pNew;
//pNew的下一个节点的指向NULL
pNew->next = NULL;
//把pCur移动到pNew,pCur指向pNew
pCur = pNew;
}
return head;
}
//链表的遍历
int SListPrint(Node* head)
{
if (head == NULL)
{
return -1;
}
//取出第一个有效节点(即头结点的next)
Node* pCur = head->next;
printf("head->");
while (pCur != NULL)
{
printf("%d->", pCur->id);
//当前节点往下移动一位,pCur指向下一个
pCur = pCur->next;
}
printf("NULL\n");
return 0;
}
int main(void)
{
Node* head = NULL;
head = SListCreat();//创建头结点
SListPrint(head);
system("pause");
return;
}