首页    新闻    小组    威客    人才    下载    博客    代码贴    在线编程    论坛
代码贴田何义的代码贴全部
#include <iostream>
using namespace std;
typedef struct PNODE{
int xs; int cs; PNODE *next;}pnode;
int CreateList(pnode* header,int n){
for(int i=1; i<=n; i++){ pnode *new_node = new pnode;//创建新节点 if (!new_node) { cout<<"创建失败"<<endl; return 0; }
new_node->next = nullptr; bool flag = true;//判断本次输入的数据是否已经存在相同次数项的标志 cout<<"请输入系数和次数:"; cin>> new_node->xs >> new_node->cs; pnode *s1 = header->next;
if (header->next==nullptr) { header->next = new_node; }
else { while(s1!=nullptr){//查找是否有相同次数的项 if(s1->cs==new_node->cs){//找到同次数的项 if(s1->xs+new_node->xs==0){//如果系数和为0 移除该节点 pnode *del = header->next; while (del->next!=s1){//找到前结点 del = del->next; } del->next = s1->next; delete s1,new_node; flag = false; break; }
else{//系数和不为0则 直接加 并且删除新节点 s1->xs += new_node->xs; delete s1,new_node; flag = false; break;  } }else{//该项次数不同则找下一个结点 s1 = s1->next; } }
if(flag){//没有同次数项则 直接在对应位置插入新节点 //查找该结点的前驱和后驱  s1 = header->next;//s1保存前驱的位置 pnode *s2;//s2保存后驱 s2 = s1;//从首元结点开始查找 if (s1==nullptr){//如果还没有数据则直接填入 header->next = new_node; new_node->next = nullptr; delete s1,s2; }
else{ while(s2!=nullptr && s2->cs < new_node->cs){//找到第一个比该节点次数大的项 s1 = s2; s2 = s2->next; }//如果没找到s1应该为最后一项,s2为空 new_node->next = s2; s1->next = new_node; } } } } return 0; }
......................
阅读全部 | 2020年10月11日 23:53
1
田何义