struct Test
{int data;struct Test *next;};voidprintlink(struct Test *head){struct Test *point;
point = head;while(1){if(point!=NULL){printf("%d",point->a);
point = point->next;}}}
计算链表的个数
intgetlinktotal(struct Test *head){int cnt;while(head!=NULL){
cnt++;
head=head->next;}return cnt;}
链表从指定节点后方插入
intinsertfrombehind(struct Test *head,int data,struct Test *new){struct Test *p = head;while(p!=NULL){if(p->data == data){
new->next = p->next;
p->next = new;return1;}
p = p->next;}return0;}
从指定前方插入
(struct Test *)insertfromafter(struct Test *head,int data,struct Test *new){struct Test *p = head;if(p->data == data){
new->next = p;
head = new;return head;}else{while(p->next!=NULL){if(head->next->data == data){
new->next = p->next;
p->next = new;return head;}
p = p->next;}return head;}}
删除指定节点
(struct Test *)deletNode(struct Test *head,int data){struct Test *p = head;if(p->data == data){
head = head->next;return head;}else{while(p->next!=NULL){if(p->next->data == data){
p->next = p->next->next;return head;}
p = p->next;}return head;}}
动态头插
struct Test *insertfromhead(struct Test *head){struct Test *new;
new =(struct Test *)malloc(struct Test);printf("qingshuruyigezhi\n");scanf("%d",&(new->data));if(new->data ==0){return head;}if(head ==NULL){
head = new;}else{
new->next = head;
head = new;}return head;}