# 线性表

#include<iostream>
#define MAX_SIZE 100
const int ERROR = -1;
const int OK = -1;
typedef int Status; typedef int ElemType;
using namespace std;
typedef struct sqlist
{
int length;
ElemType Elem_array[MAX_SIZE];
}SqList;
typedef struct Lnode
{
ElemType data;
struct Lnode* next;
}LNode;
typedef struct ploy
{
float coef;  //系数部分
int expn;     //指数部分
struct ploy* next;
}Ploy;
//顺序表的初始化
//Status Init_SqList(SqList* L)
/*
{
L->Elem_array = (ElemType*)malloc(MAX_SIZE*sizeof(ElemType));
if (!L->Elem_array)return ERROR;
else { L->length = 0; return OK; }
}
*/
Status Insert_SqList(SqList &L, int i, ElemType e)
{
int j;
if (i < 0 || !(L.length - 1))return ERROR;
if (L.length >= MAX_SIZE)
{
cout << "线性表溢出" << endl;
return ERROR;
}
for (j = L.length - 1; j >= i - 1; --j)
L.Elem_array[j + 1] = L.Elem_array[j];
L.Elem_array[i - 1] = e;
L.length++;
return OK;
}
Status Locate_Delete_SqList(SqList& L, ElemType x)//针对线性表的定位删除
{
int i = 0, k;
while (i<L.length)
{
if (L.Elem_array[i] != x)i++;
else
{
for (k = i + 1; k < L.length; k++)
L.Elem_array[k - 1] = L.Elem_array[k];
L.length--; break;
}
}
return 0;
}
Status Insert_LNode(LNode &L,int n, int x)//在n个节点之后插入data为x的节点
{
int k = 1;
LNode* q,*p,*l;
p = L.next;
while (k < n)
{
p = p->next;
k++;
}
q = new LNode;
l = p->next;
p->next = q;
q->next = l;
q->data = x;
return 0;
}
{
Ploy* lc, * pc, * pa, * pb, * ptr; float x;
lc = pc = La; pa = La->next; pb = Lb->next;
while (pa != NULL && pb != NULL)
{
if (pa->expn < pb->expn)
{
pc->next = pa, pc = pa; pa = pa->next;
}
if (pa->expn>pb->expn)
{
pc->next = pb; pc = pb; pb = pb->next;
}
else
{
x = pa->coef + pb->coef;
if (abs(x) <= 1.0e-6)
{
ptr = pa; pa = pa->next; free(ptr);
ptr = pb; pb = pb->next; free(ptr);
}
else
{
pc->next = pa; pa->coef = x;
pc = pa; pa = pa->next;
ptr = pb; pb = pb->next; free(ptr);
}
}
}
return lc;
}
int main()
{
int a[]{ 1,2,3,4,5,6 };
SqList List{ 6,{1,2,3,4,5,6} };
//SqList* List{ Elem_array:a,length:6};
//手动完成初始化
/*
for(int i=0;i<6;i++)
List.Elem_array[i] = a[i];
List.length = 6;
*/
cout << "length "<<List.length<<endl;
Insert_SqList(List, 2, 100);
for (int i = 0; i < 7; i++)
cout << List.Elem_array[i] << endl;
Locate_Delete_SqList(List, 4);
cout << "Delete one element:" << endl;
for (int i = 0; i < 7; i++)
cout << List.Elem_array[i] << endl;
return 0;
}


posted @ 2020-05-22 08:55  为红颜  阅读(128)  评论(0编辑  收藏  举报