#include<stdio.h>
typedef struct NODE {
int data;
struct NOdE* next;
}Node;
void CreateLink1() //有头结点的头插法
{
//注意:此法插入会使输出时反向
Node* head = malloc(sizeof(Node)); //申请头结点
head->next = NULL;
int num;
while (1) {
scanf("%d", &num);
if (num < 0)
break;
Node* p = malloc(sizeof(Node)); //申请新的结点空间,p是栈区变量,每循环完毕都被释放;
p->data = num;
p->next = head->next;
head->next = p;
}
}
Node* createLink2(int n)//有头结点的尾部插入
{
Node* head = malloc(sizeof(Node));
if (head == NULL) return NULL;
head->next = NULL;
Node* q = head;
while (n) {
int num = 0;
scanf("%d", &num);
N* p = malloc(sizeof(N));
p->data = num;
p->next = NULL;
q->next = p; //q用于保存上一个节点的地址
q = q->next;
n--;
}
return head;
}
void PrintLink(Node* h)
{
while (h) {
//输出
printf("%d ", h->data);
h = h->next;
}
}
void FreeLink(Node* p)
{
Node* t = NULL; //定义结构体指针;
while (p) {
t = p->next; //下一个结点的地址暂存于t
free(p);
p = t;
}
}
int main()
{
Node* head = (Node*)malloc(sizeof(Node)); //申请头结点空间
head->next = NULL; //默认将头结点的地址域赋空
int n;
scanf("%d", &n);
CreateLink2(head, n);
PrintLink(head->next);
return 0;
}
链表的创建以及输出(C语言学习成果)
猜你喜欢
转载自blog.csdn.net/Genius_bin/article/details/112278151
今日推荐
周排行