順序表Aのデータ要素が順序を増し、手順を書いてみて、xを順序表の適切な位置に挿入し、このテーブルを依然として秩序化させる.
3290 ワード
次の2つの方法を提供します.順番表とシングルチェーン表でそれぞれ実現します.
順序表:
順序表:
#include
#include
#include
#include
using namespace std;
const int LIST_INIT_SIZE = 100;
const int LISTINCREASEMEMT = 10;
//
typedef int ElemType;
//
typedef struct{
ElemType *elem;
int length;
int listsize;
}SqList;
//
bool InitList_Sq(SqList &L){
L.elem = (ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType));
if(!L.elem){
return false;
}
L.length = 0;
L.listsize = LIST_INIT_SIZE;
return true;
}
// ( )
bool ListInsert_Sq(SqList &L, ElemType e){
ElemType *newbase;
// ,
if(L.length >= L.listsize){
newbase = (ElemType *)realloc(L.elem, (L.listsize + LISTINCREASEMEMT) * sizeof(ElemType));
if(!newbase){
return false;
}//
L.elem = newbase;
L.listsize += LISTINCREASEMEMT;
}
//
int i;
for(i=0; i e){
break;
}
}
ElemType *q = &(L.elem[i]);
ElemType *p=&(L.elem[L.length-1]);
for(q; p>=q; p--){
*(p+1) = *p;
}
*q = e;
++L.length;
return true;
}
//
bool Print(SqList &L){
for(int i=0; i> len;
cout << endl << " " << len << " :";
for(int i=0; i
シングルリスト:#include
#include
#include
#define LIST_INIT_SIZE 100
#define LISTINCREASEMEMT 10
using namespace std;
typedef int ElemType; //
//
typedef struct Node
{
ElemType data; //
struct Node *next; //
}Node,*LinkList;
LinkList p, q, flag;
//
void CreateList(LinkList &A, int n)
{
A=(LinkList)malloc(sizeof(Node));
p = A;
for(int i=0; idata));
p->next = q;
q->next = NULL;
p = q;
}
}
// ( )
void Insert(LinkList &L, int n, ElemType &x){
p = L->next;
q = (LinkList)malloc(sizeof(Node));
flag = (LinkList)malloc(sizeof(Node));
q->data = x;
for(int i=1; i<=n; i++){
if(p->data < x && i!=n){
flag = p;
p = p->next;
}
else if(i == n){
flag->next = q;
q->next = NULL;
}
else{
q->next = flag->next;
flag->next = q;
break;
}
}
}
//
void PrintfList(LinkList &L, int n){
p = L->next;
printf("%d", p->data);
for(int i=2; i<=n; ++i)
{
p = p->next;
printf(" %d", p->data);
}
printf("
");
}
int main(int argc, char** argv) {
LinkList A;
ElemType x;
int len;
cout << " :";
cin >> len;
cout << endl << " " << len << " :";
CreateList(A, len);
cout << endl << " :";
scanf("%d", &x);
Insert(A, len, x);
cout << endl << " :";
PrintfList(A, len+1);
return 0;
}