头插法创建链表:
struct LinkList *creatLinkListFromHead(){
int num;
printf("请输入你想创建几个节点的链表:(小于20)");
scanf("%d",&num);
struct LinkList *new[20];
for(int i = 0;i < num;i++){
new[i] = (struct LinkList*)malloc(sizeof(struct LinkList));
printf("请输入第%d个节点的数据值:",num-i);
scanf("%d",&new[i]->data);
}
for(int j = num-1;j > 0;j--){
new[j]->next = new[j-1];
}
new[0]->next = NULL;
return new[num-1];
}
尾插法创建链表:
struct LinkList *creatLinkListFromTail(){
int num;
printf("请输入你想创建几个节点的链表:(小于20)");
scanf("%d",&num);
struct LinkList *new[20];
for(int i = 0;i < num;i++){
new[i] = (struct LinkList*)malloc(sizeof(struct LinkList));
printf("请输入第%d个节点的数据值:",i+1);
scanf("%d",&new[i]->data);
}
for(int j = 0;j < num;j++){
new[j]->next = new[j+1];
}
new[num-1]->next = NULL;
return new[0];
}
链表中任意位置增加节点:
int increaseOneNode(struct LinkList *head,int edata,struct LinkList *newNode){
struct LinkList *p = head;
while(p != NULL){
if(p->data == edata){
newNode->next = p->next;
p->next = newNode;
return 1;
}
p = p->next;
}
return 0;
}
链表的遍历输出:
void printfLinkList(struct LinkList *head){
struct LinkList *p = head;
while(p != NULL){
printf("%d ",p->data);
p = p->next;
}
putchar('\n');
}