下面這個代碼是用單鏈表做的,順序表的做法過幾天再補上。
#include <iostream>
#include <cstdio>
#include <malloc.h>
#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; i<n; ++i)
{
q = (LinkList)malloc(sizeof(Node));
scanf("%d",&(q->data));
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("\n");
}
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;
}