目的是删除(1234567)中的奇数位字符
采用双链表储存,之后按位删除 Insert()头插法插入 Delet()删除
show()输出 ; finded()求链表长度;
删除第4个结点时出错
#include<stdio.h>
#include<stdlib.h>
char *a="*abcdefghijklmnopqrs";
char *a1="*1234567";
typedef struct LNode{
LNode*next,*front;
char data;
}LNode,*LinkList;
void Insert(LinkList &L,char x){
LNode*q=(LNode*)malloc(sizeof(LNode));
q->data=x;
q->next=L->next;
if(L->next!=NULL) L->next->front=q;
q->front=L;
L->next=q;
}
void Init(LinkList &L){
L=(LNode*)malloc(sizeof(LNode));
L->next=NULL;
L->front=NULL;
for(int i=1;i<=1;i++){
for(int j=7;j>0;j--){
Insert(L,a1[j]);
}
}
}
int findend(LinkList &L){
int cnt=0;
for(LNode*q=L->next;q!=NULL;q=q->next){
cnt++;
}
return cnt;
}
void Show(LinkList &L){
for(LNode*q=L->next;q!=NULL;q=q->next){
printf("%c ",q->data);
}
printf("\n");
}
void Delet(LinkList &L, int x){
LNode*p;
int cnt=1;
for(p=L->next;cnt<x;cnt++,p=p->next);
p->next->front=p->front;
p->front->next=p->next;
free(p);
}
void Yun(LinkList &L){
while(1){
for(int i=1;i<=4;i++){ //这里删除到第4个就无法运行了
Delet(L,i);
Show(L);
}
Show(L);
}
}
int main(){
LinkList L;
Init(L);
Show(L);
Yun(L);
return 0;
}