谁方便帮我看一下程序吗?卡住了,【问题描述】设单链表Va中的数据元素递增有序。试编写程序,将数据X插入单链表Va,要求插入后保持该表的有序性。
【输入形式】
【输出形式】
【样例输入】
8
25 28 36 78 96 102 980 1000
88
【样例输出】25 28 36 78 88 96 102 980 1000
#include
#include
#include
using namespace std;
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList;
void InitList_L(Node *LinkList)
{
LinkList=(Node *)malloc( sizeof(Node));
(LinkList)->next=NULL;
}
void CreatList(Node *LinkList){
Node *r=LinkList,*s;
int a;
while(scanf("%d",&a)){
if(a!=0){
s=(Node *)malloc(sizeof(Node));
s->value=a;
r->next=s;
r=s;
}
else{
r->next=NULL;
break;
}
}
}
void ListInsert_L(LinkList &L, int i, int x){
LNode *p = GetElem(L,i-1);
LNode *s = (LNode *)malloc(sizeof(LNode));
s->data = x;
s->next = p->next;
p->next = s;
}
void DisplayList_L(LinkList &L)
LinkList p;
p=L->next;
while(p)
{
cout<data<<' ';
p=p->next;
}
int main()
{
int a;LinkList L,x;
InitList_L(L);
CreatList(L);
cin>>X;
ListInsert_L(L,X,i);
DisplayList_L(L);
return OK;
}
```
有几处问题需要注意:
函数 InitList_L 的参数类型应该是 LinkList &,表示传递的是指向指针的引用,否则函数内部的修改不会影响到传入的参数。
函数 CreatList 中应该使用 LinkList 类型来定义 r 和 s,并且在创建 LinkList 时应该设置其头结点,否则头结点指针未被初始化,可能指向随机地址,导致程序出错。
函数 ListInsert_L 中应该使用 LinkList 类型来定义 p,并且在找到插入位置的结点时,应该判断 p 是否为空,如果为空则无法插入,应该报错或者忽略插入。
函数 DisplayList_L 的参数类型应该是 LinkList 而不是 LinkList &,因为该函数不需要修改链表。
在 main 函数中,应该将输入的数据插入链表中,并且需要指定插入的位置,可以通过遍历链表找到第一个大于等于插入元素的结点,然后将元素插入该结点之前即可。
下面是修改后的代码:
Copy code
#include <iostream>
#include <stdlib.h>
#include <malloc.h>
using namespace std;
typedef struct LNode {
int data;
struct LNode *next;
} LNode, *LinkList;
void InitList_L(LinkList &L) {
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
}
void CreatList(LinkList &L) {
LNode *r = L, *s;
int a;
while (scanf("%d", &a)) {
if (a != 0) {
s = (LNode *)malloc(sizeof(LNode));
s->data = a;
r->next = s;
r = s;
} else {
r->next = NULL;
break;
}
}
}
void ListInsert_L(LinkList &L, int x) {
LNode *p = L, *s;
while (p->next && p->next->data < x) {
p = p->next;
}
s = (LNode *)malloc(sizeof(LNode));
s->data = x;
s->next = p->next;
p->next = s;
}
void DisplayList_L(LinkList L) {
LNode *p;
p = L->next;
while (p) {
cout << p->data << ' ';
p = p->next;
}
}
int main() {
int x;
LinkList L;
InitList_L(L);
CreatList(L);
cin >> x;
ListInsert_L(L, x);
DisplayList_L(L);
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:#include "stdio.h"
int main() {
int i;
for(i=10; i <=999; i++)
if((i/100==0&&i/10==i%10)||(i/100!=0&&i/100==i%10))
printf("%d ",i);
}
#include "stdio.h"
int main() {
int a,b;
for (int i = 10; i <= 1000; i++)
{
b=i;
a=0;
while (b>0)
{
a=a*10+b%10;
b/=10;
}
if (a==i)
{
printf("%d ",i);
}
}
}