c语言实现 尾插法创建链表
#include<stdio.h>
#include<stdlib.h>
struct Test
{
int data;
struct Test *next;
};
void printLine(struct Test *head)
{
struct Test *point;
point = head;
while(point != NULL)
{
printf("%d ",point->data);
point = point->next;
}
putchar('\n');
}
int printnum(struct Test *head)
{
int sum;
while(head != NULL)
{
head = head -> next;
sum ++;
}
return sum;
}
int searchnum(struct Test *head,int data)
{
while(head != NULL){
if(head->data == data)
{
return 1;
}
head = head -> next;
}
return 0;
}
int insert(struct Test *head,int data,struct Test *new)
{
struct Test *point = head;
while(point != NULL){
if(point->data == data)
{
new->next = point->next;
point->next = new;
}
point = point->next;
}
return 0;
}
struct Test* qiancha(struct Test *head,int data,struct Test *new)
{
struct Test *point = head;
if(point->data == data){
new->next = point;
return new;
}
while(point->next !=NULL)
{
if(point->next->data == data)
{
new->next=point->next;
point->next=new;
printf("qianinsert:ok!\n");
return head;
}
point = point->next;
}
printf("qiancha:no!\n");
return head;
}
struct Test* Delenum(struct Test *head,int data)
{
struct Test *point = head;
if(point->data == data){
head = head->next;
free(point);
return head;
}
while(point->next != NULL){
if(point->next->data == data){
point->next = point->next->next;
return head;
}
point = point->next;
}
return head;
}
struct Test* touchadongtai(struct Test *head,struct Test *new)
{
if(head == NULL){
head = new;
}else{
new->next = head;
head = new;
}
return head;
}
struct Test* creatline(struct Test *head)
{
struct Test *new;
while(1){
new = (struct Test *)malloc(sizeof(struct Test));
printf("input your number line:\n");
scanf("%d",&(new->data));
if(new->data == 0){
printf("input over\n");
free(new);
return head;
}
head = touchadongtai(head,new);
}
}
struct Test* weichadongtai(struct Test *head,struct Test *new)
{
struct Test *point =head;
if(head == NULL){
head = new;
}
while(point->next != NULL){
point = point->next;
}
point ->next = new;
return head;
}
int main()
{
struct Test *head = NULL;
head = creatline(head);
printLine(head);
struct Test t1 = {100,NULL};
head = touchadongtai(head,&t1);
printLine(head);
struct Test t2 = {1000,NULL};
head = weichadongtai(head,&t2);
printLine(head);
return 0;
}
运行结果