#include <stdio.h>
#include <stdlib.h>
struct Test
{
int data;
struct Test *next;
};
void printLink(struct Test *head)
{
struct Test *point;
point = head;
while (point != NULL){
printf("%d ", point->data);
point = point->next;
}
putchar('\n');
}
struct Test* insertFromHead(struct Test *head, struct Test *new)
{
if (head == NULL){
head = new;
}else{
new->next = head;
head = new;
}
return head;
}
struct Test* insertFromBehind(struct Test *head, struct Test *new)
{
struct Test *p = head;
if (p == NULL){
head = new;
return head;
}
while (p->next != NULL){
p = p->next;
}
p->next = new;
return head;
}
struct Test* creatLink1(struct Test *head)
{
struct Test *new;
while (1){
new = (struct Test*)malloc(sizeof(struct Test));
printf("input new data:\n");
scanf("%d", &(new->data));
if (new->data == 0){
printf("0 quit\n");
free(new);
return head;
}
head = insertFromHead(head, new);
}
}
struct Test* creatLink2(struct Test *head)
{
struct Test *new;
while (1){
new = (struct Test*)malloc(sizeof(struct Test));
printf("input new data:\n");
scanf("%d", &(new->data));
if (new->data == 0){
free(new);
return head;
}
head = insertFromBehind(head, new);
}
}
int main()
{
struct Test *head = NULL;
head = creatLink1(head);
printLink(head);
head = creatLink2(head);
printLink(head);
return 0;
}
//result:
input new data:
1
input new data:
2
input new data:
3
input new data:
4
input new data:
5
input new data:
0
0 quit
5 4 3 2 1
input new data:
2
input new data:
3
input new data:
4
input new data:
5
input new data:
0
5 4 3 2 1 2 3 4 5
动态链表头插法与尾插法
最新推荐文章于 2024-07-19 15:45:46 发布