#include<stdio.h>
#include<stdlib.h>
#define NULL 0
// typedef struct stu_node{
// char cno[10];
// char cname[10];
// int iscore[4];
// }elemtype;
typedef int elemtype;
typedef struct node {
int data;
struct node * next;
}LinkList;
//头插法建立带头结点的链表
LinkList *create_linklist(){
int x;
LinkList *head,*p;
head =(LinkList *)malloc(sizeof(LinkList));
head->next =NULL;
printf("请输入数据直到0结束\n");
scanf("%d\n",&x);
while(x!=0){
p=(LinkList*)malloc(sizeof(LinkList));
p->data =x;
p->next=head->next;
head->next =p;
scanf("%d\n",&x);
}
return head;
}
//尾插法
LinkList *creat_linklistW(){
LinkList *head,*p,*tail;//tail为尾节点
head=(LinkList *)malloc(sizeof(LinkList));
head->next =NULL;
tail=head;
int x;
printf("请输入数据直到0结束\n");
scanf("%d\n",&x);
while(x!=0){
p=(LinkList *)malloc(sizeof(LinkList));
p->data =x;
tail->next=p;
tail =p;
tail->next =NULL;
scanf("%d\n",&x);
}
return head;
}
//遍历链表
void link_travel(LinkList *head){
LinkList *p =head->next;
while(p!=NULL){
printf("%d\n",p->data);
p=p->next;
}
}
int LinkList_length(LinkList *head){
LinkList *p = head;
int j=0;
while(p->next!=NULL){
p=p->next;
j++;
}
return j;
}
LinkList *getData_LinkList(LinkList *head,int i){
LinkList *p;
int j=0;
if(i<=0) return NULL;
p= head;
while(p->next !=NULL&&j<i){
p=p->next;
j++;
}
if(i==j) return p;
return NULL;
}
LinkList *serach_LinkList(LinkList *head,int key){
LinkList *p;
p=head->next;
while(p!=NULL){
if(p->data !=key){
p=p->next;
}else{ break;}
}
return p;
}
void insertBefore(LinkList *head,int key,int x){
LinkList *p,*k,*q;
q= head;
k=getData_LinkList(head,key);
p=(LinkList *)malloc(sizeof(LinkList));
p->data=x;
while(q->next !=k){
q=q->next;
}
p->next =q;
q->next =p;
}
void deleteAfter(LinkList *head,int x)
{
LinkList *p,*r;
p=getData_LinkList(head,x);
r =p->next;
p->next=r->next;
free(r);
}
void SetNull(LinkList *head){
LinkList *r;
while(head->next!=NULL){
r=head->next;
head->next=r->next;
free(r);
}
}
void main(){
}