头插法:#include<stdio.h>
Linklist CreateFromHead(){
Linklist L;
LNode*s;
char c;
int flag=1;
L=(Linklist)malloc(sizeof(LNode));
//带头节点的单链表
L->next=NULL;
while(flag){
c=getcahr();
if(c!="!"){
s=(Linklist)malloc(szieof(LNode));
s->data=c;
s->next=L->next;
L->next=s;
}
else{
flag=0;
}
return L;
}
=========================================================================
尾插法:
#include<stdio.h>
Linklist CreateFromTail(){
Linklist l;
LNode*s;
char c;
int flag=1;
L=(Linklist)malloc(szieof(LNode));
L->next=NULL;
r=L;
while(flag){
c=getchar();
if(c!="!"){
s=(Linklist)malloc(sizeof(LNode));
s-data=c;
r->next=s;
r=s;
}
else{
flag=0;
r->next=NULL;
}
}
return L;
}
=========================================================================
求链表长度:
#include<stdio.h>
int ListLength(LinkList L){
LinkList P;
P=L;
j=0;
while(p->next!=NULL){
p=p->next;
j++;
}
return j;
}
===============================================
插入元素:
int InsList(LinkList L,int i,char e){
LinkList pre,s;
int k;
pre=L; k=0;
//pre指向第i-1个元素的位置
while(pre!=NULL&&k<i-1){
pre=pre->next;
k++;
}
if(k!=i-1){
printf("插入位置错误");
return ERROR;
}
s=(LinkList)malloc(sizeof(LNode));
s->data=e;
s->next=pre->next;
pre->next=s;
return 1;
}
===============================================
删除元素:
#include<stdio.h>
int DelList(LinkList L,int i,char*e){
LinkList pre,r;
int k;
pre=L;
k=0;
while(pre->next!=NULL&&k<i-1){
pre=pre->next;
k++;
}
if(k!=i-1){ //此处表示为i<1
printf("删除的位置错误!");
return ERROR;
}
r=pre->next;
pre->next=pre->next->next;
*e=r->data;
free(r);
return 1;
}
===============================================