运行结果:
代码:
#include <iostream>
using namespace std;
typedef struct _linknode
{
int data;
struct _linknode* next;
}LinkNode;
int main()
{
int i, data, n;
LinkNode* head, * p, * t, * front;
head = new LinkNode;
head->next = 0;
p = head;
//输入n
cin >> n;
//输入n个数据
for (i = 0; i < n; i++)
{
t = new LinkNode;
cin >> t->data;
t->next = 0;
p->next = t;
p = t;
}
//输入插入的数据
cin >> data;
t = new LinkNode;
t->data = data;
t->next = 0;
//如果比最后一个元素大,直接插入最后一个位置
if (t->data > p->data)
{
p->next = t;
}
else
{
front = head;
p = front->next;
while (p)
{
if (p->data > t->data)
{
front->next = t;
t->next = p;
break;
}
else
{
front = p;
p = p->next;
}
}
}
//输出
p = head->next;
int flag = 0;
while (p)
{
if (flag == 0)
{
cout << p->data;
flag = 1;
}
else
cout << " " << p->data;
p = p->next;
}
return 0;
}
#include <iostream>
using namespace std;
typedef struct _linknode
{
int data;
struct _linknode *next;
}linknode,*linklist;
void createNode(linklist &head)
{
head = new linknode();
linklist p = head;
int n;
cin>>n;
for(int i=0;i<n;i++)
{
linklist q = new linknode();
cin>>q->data;
q->next = NULL;
p->next = q;
p = q;
}
}
void insertNode(linklist head,int x)
{
linklist p = head;
linklist q = new linknode();
q->data = x;
q->next = NULL;
while(p->next != NULL)
{
if(p->next->data >= x)
{
q->next = p->next;
p->next = q;
break;
}
p = p->next;
}
if(p->next == NULL)
p->next = q;
}
void print(linklist head)
{
linklist p = head->next;
while(p != NULL)
{
cout<<p->data<<" ";
p = p->next;
}
}
int main()
{
linklist head = NULL;
createNode(head);
int x;
cin>>x;
insertNode(head,x);
print(head);
return 0;
}
顺序表:
#include <iostream>
#include <cstdio>
#include <stdlib.h>
#include <malloc.h>
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<L.length; i++){
if(L.elem[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<L.length; i++){
printf("%d ",L.elem[i]);
}
printf("\n");
}
int main(int argc, char** argv) {
int len;
SqList A;
InitList_Sq(A);
cout << "请输入顺序表的长度:";
cin >> len;
cout << endl << "请按递增顺序输入" << len << "个元素:";
for(int i=0; i<len; i++){
scanf("%d",&A.elem[i]);
}
A.length = len;
cout << endl << "请输入需要插入的元素:";
ElemType x;
scanf("%d", &x);
ListInsert_Sq(A, x);
cout << endl << "插入后表中元素依次为:";
Print(A);
return 0;
}
单链表:
#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;
}
这题很简单,C++提供了list、map等容器,里面有排序的功能;只要把数字插入进去就可以了!谢谢,望采纳!
#include <iostream>
#include <list>
#include <algorithm>
using namespace std;
int main()
{
int n;
cin >> n;
list<int> l;
for (int i = 0; i < n; i++)
{
int a;
cin >> a;
l.push_back(a);
}
int x;
cin >> x;
auto it = find_if(l.begin(), l.end(), [x](const auto &a) { return a > x; });
l.insert(it, x);
for (auto a : l)
cout << a << ' ';
return 0;
}