一.建立单链表步骤
- 定义结点的数据存储结构
typedef struct node{
int Element;
struct node *next;
}Node;
- 定义创建新结点函数,该函数为新结点开辟空间并且赋予元素值,最后函数返回创建的该新结点
Node* NewNode(){
Node* newNode;
newNode = (Node *) malloc(sizeof(Node));
printf("请输入该结点的元素值:");
scanf("%d", &newNode->Element);
newNode->next = NULL;
return newNode;
}
- 建立链表函数,内包含创建新结点函数Node*NewNode(),调用该函数之后将该新结点接入链表头,可以连续创建新结点,并且接入到链表当中,最后函数返回整个链表的头结点。有了这个头结点我们就可以进行增删改查等基础操作了。
Node* BuildList(Node* first) {
Node* p,*head;
char c;
head = first;
printf("输入y开始建立:");
while((c = getchar()) != 'n'){
p = NewNode();
if(first == NULL){
head = p;
first = head;
}
else{
head->next = p;
head = head->next;
}
printf("Another element?y/n\n");
getchar();
}
return first;
}
二.完整代码
#define Maxsize 50
#include <stdio.h>
#include <stdlib.h>
typedef struct node{
int Element;
struct node *next;
}Node;
Node* NewNode(){
Node* newNode;
newNode = (Node *) malloc(sizeof(Node));
printf("请输入该结点的元素值:");
scanf("%d", &newNode->Element);
newNode->next = NULL;
return newNode;
}
Node* BuildList(Node* first) {
Node* p,*head;
char c;
head = first;
printf("输入y开始建立:");
while((c = getchar()) != 'n'){
p = NewNode();
if(first == NULL){
head = p;
first = head;
}
else{
head->next = p;
head = head->next;
}
printf("Another element?y/n\n");
getchar();
}
return first;
}
void printLink(Node *first){
printf("链表的元素有这些:");
while(first){
printf("%d ", first->Element);
first = first->next;
}
}
void main()
{
Node *first = NULL;
first = BuildList(first);
printLink(first);
}