用的是单链表,但是函数无法运行,请大佬看看哪里有错
#include<iostream>
#include<ctype.h>
using namespace std;
#include<stdlib.h>
#include<math.h>
#define ERROR 0
#define OK 1
typedef int Status;
typedef int ElemType;
typedef struct PolyNode {
int coef;
int exp;
struct PolyNode *next;
}PolyNode, *PolyLink; // 多项式元素(项)结点类型
typedef PolyLink LinkedPoly; // 链式多项式
void Create(PolyLink &p, int n){
PolyNode *s =NULL;
PolyNode *pre =NULL;
PolyNode *q =NULL;
p=(PolyLink)malloc(sizeof(PolyNode)); // 建立一个带头节点的单链表
p->next =NULL;
for (int i = 1; i <=n ; ++i) { // 依次输入n个非零项
s =(PolyLink)malloc(sizeof(PolyNode)); // 生成新节点
cout<<"请输入"<<i<<"的系数和指数:"<<endl;
cin >> s->coef >> s->exp; // 输入系数和指数
pre = p; // pre用于保存q的前驱,初值为头结点
q = p->next; // q初始化,指向首元节点
while ( q && q->exp < s->exp ){ // 找到第一个大于输入项指数的项*q
pre = q;
q = q->next;
}
s->next = q; // 将输入项s插入到q和其前驱节点pre之间
pre->next = s;
}
}
int printer(PolyLink &L){
if (L == NULL) return ERROR;
PolyNode *p = L->next;
while (p){
cout<<p->coef<<" "<<p->exp<<" ";
p = p->next;
}
return 0;
}
void Separation(PolyLink &plyn,PolyLink &odd)
{ PolyNode *q,*p,*s;
odd=(PolyLink)malloc(sizeof(PolyNode));
odd->next=NULL; //建立奇次项空表
q=plyn;p=plyn->next;s=odd;//s指向奇次项链表的尾结点,
//p指向待判断结点
while(p!=plyn){
if(p->exp%2==0){q=p;p=p->next;}
else {
q->next=p->next;//从原表中删除奇次项结点
p->next=s->next;s->next=p;//插入到新表中
p=q->next;s=s->next;//p、s指针后移
}
}
}
int main(){
PolyLink plyn,odd;
ElemType n;
cout<<"changdu"<<endl;
cin>>n;
Create(plyn,n);
printer(plyn);
Separation(plyn,odd);
printer(plyn);
}
C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html
C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html