设顺序表S中的数据元素递增有序。试编写程序,将数据x插入顺序表s,要求插入后保持该表的有序性
样例输入:8
25 28 36 78 96 102 980 1000
88
样例输出:25 28 36 78 88 96 102 980 1000
看看,用c++,不要用太复杂的代码,我看不懂,简单明了的最好,希望给个思路
运行结果:
代码:
#include <iostream>
using namespace std;
struct StNode
{
int data;
struct StNode* next;
};
//创建节点
StNode* CreateNode(int d)
{
StNode* node = new StNode;
node->data = d;
node->next = 0;
return node;
}
//打印链表
void Display(StNode* head)
{
//cout << "打印链表:" << endl;
while(head)
{
cout << head->data << " ";
head = head->next;
}
cout << endl;
}
int main()
{
StNode* head,*p,*t;
head = 0;
p = head;
t = head;
int data;
int n;
cin >> n;
for(int i=0;i<n;i++)
{
cin >> data;
t = CreateNode(data);
if(head ==0)
{
head = t;
p = head;
}
else
{
p->next = t;
p = t;
}
}
//输入需要插入的数
cin >> data;
t = CreateNode(data);
//判断是否比第一个元素小
if(t->data < head->data)
{
t->next = head;
head = t;
}
p = head->next;
while(p->next)
{
if(p->next->data > data)
{
t->next = p->next;
p->next = t;
break;
}else
p = p->next;
}
//插入到最后
if(p->next == 0)
{
p->next = t;
}
//输出
p= head;
while(p)
{
if(p==head)
cout << p->data;
else
cout << " "<<p->data;
p = p->next;
}
//释放空间
while(head)
{
p = head->next;
delete head;
head = p;
}
head = 0;
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!