struct stu *prior; struct stu *next;
}lode,*linklist;
void Creat(linklist &L)//建立双向链表 {
L=(linklist)malloc(sizeof(lode));//为链表申请空间,建立头结点 L->prior=L; L->next=L; int l;
printf(\"请输入您要插入的元素个数: \"); scanf(\"%d\
printf(\"请输入您要插入的元素: \"); linklist p,pp; pp=L;
while(l--)//给链表插入元素 { }
//输入元素
p=(linklist)malloc(sizeof(lode)); scanf(\"%d\//插入元素 p->prior=pp; pp->next=p; p->next=L; L->prior=p; //指针后移 pp=p;
}
void Show(linklist L)//输出双向链表信息 { }
linklist p; p=L->next;
printf(\"双向链表元素为:\\n\"); while(p!=L) { }
printf(\"%d \p=p->next;
void Delete(linklist &L)//删除元素 {
linklist p,pp; int x;
printf(\"输入您要删除的元素:\\n\"); scanf(\"%d\p=L->next;
while(p!=L)//可以删除所有与x相等的元素 { }
if(p->data==x) {
p->prior->next=p->next; p->next->prior=p->prior; pp=p; p=p->next; free(pp);
}
p=p->next;
printf(\"删除完成!\\n\"); }
void insert(linklist &L)//插入元素(假设原始链表是有序的) { linklist p,pp; printf(\"输入您要插入的元素:\\n\");
pp=(linklist)malloc(sizeof(lode)); scanf(\"%d\
p=L->next;
while(p->data p=p->next; //插入结点 printf(\"插入之后的序列为:\\n\"); Show(L); p->prior->next=pp; pp->prior=p->prior; pp->next=p; p->prior=pp; } int judje(linklist L)//判断对称性 { linklist p,q; p=L->next;//头指针 q=L->prior;//尾指针 while(p->data==q->data)//判断相等 { if((p->next==q&&q->prior==p)||p->next==q->prior)//如果两个指针相遇,退出 break; } //否则头指针后移,尾指针前移 p=p->next; q=q->prior; if(p->data==q->data)//退出的时候如果两指针的值是相等的返回1,否则返回0 return 1; return 0; } void change(linklist &L)//将奇数元素置前,偶数置后。 { linklist p,pp,q; p=L->next; while(p!=L) { if(p->data%2)//如果是奇数元素 { } else//为偶数时不作处理,指针后移 p=p->next; //取出这个元素 p->prior->next=p->next; p->next->prior=p->prior; //将这个元素的值赋给新的指针 pp=(linklist)malloc(sizeof(lode)); pp->data=p->data; //将这个指针插入到表头 pp->next=L->next; L->next->prior=pp; pp->prior=L; L->next=pp; //指针后移并删除此节点 q=p; p=p->next; free(q); } printf(\"处理后的序列为:\\n\"); Show(L); } void list() { printf(\"\\n\"); printf(\"\\*************************\\n\"); printf(\"\\* 建立双向链表 1\\n\"); printf(\"\\* 输出双向链表 2\\n\"); printf(\"\\* 删除指定元素x 3\\n\"); printf(\"\\* 插入元素e仍保持有序 4\\n\"); printf(\"\\* 判断对称性 5\\n\"); printf(\"\\* 修改链表使得奇数在前边 6\\n\"); printf(\"\\* 结束 7\\n\"); printf(\"\\n\"); printf(\"请输入您需要的操作:\\n\"); } int main() { } int n; list(); scanf(\"%d\linklist L; while(n!=7) { } switch(n) { case 1:{Creat(L);printf(\"链表建立完成!\\n\");break;} case 2:{Show(L);break;} case 3:{Delete(L);break;} case 4:{insert(L);break;} case 5:{printf(\"%d\\n\case 6:{change(L);break;} default:printf(\"请输入有效指令!\\n\"); } list(); scanf(\"%d\ return 0; 因篇幅问题不能全部显示,请点此查看更多更全内容