- linklist create_h(){
- linklist p=(linklist)malloc(sizeof(struct Node));
- if(p==NULL)return NULL;
- p->len=0;
- p->next=p;//开始就让头节点指向自身
- return p;
- }
- linklist create(){
- linklist p=(linklist)malloc(sizeof(struct Node));
- if(p==NULL)return NULL;
- p->data=0;
- p->next=NULL;
- return p;
- }
- int insert_head(linklist p,datatype data){
- if(p==NULL)return -1;
- linklist q=create();
- if(q==NULL)return -1;
- q->next=p->next;//若是第一个元素,则q指向头节点完成循环
- p->next=q;
- q->data=data;
- p->len++;
- return 0;
- }
- int insert_index(linklist p,int index,datatype key){
- if(p==NULL||index>p->len+1||index<1){
- return -1;
- }
- linklist q=p;
- for(int i=0;i
len-1;i++){ - q=q->next;
- }
- linklist k=create();
- if(k==NULL)return -1;
- k->data=key;
- k->next=q->next;
- q->next=k;
- p->len++;
- return 0;
- }
- int dele_rear(linklist p){
- if(p==NULL||p->len==0)return -1;
- linklist q=p;
- for(int i=0;i
len-1;i++) - q=q->next;
- q->next=mfree(q->next);
- q->next=p;
- p->len--;
- return 0;
- }
- int output(linklist p){
- puts("");
- if(p==NULL||p->len==0)return -1;
- linklist q=p;
- for(int i=0;i
len;i++){ - q=q->next;
- printf("%d\t",q->data);
- }
- putchar(10);
- return 0;
- }
- int dele_index(linklist p,int index){
- if(p==NULL||index>p->len||index<1)return -1;
- linklist q=p;
- for(int i=0;i
-1;i++){ - q=q->next;
- }
- linklist k=q->next;
- q->next=k->next;
- k=mfree(k);
- p->len--;
- return 0;
- }
-
- void invert_looplist(loop_p p){
- loop_p q=p->next->next;
- p->next->next=NULL;
- while(q!=p){
- loop_p k=q->next;
- q->next=p->next;
- p->next=q;
- q=k;
- }
- }