数据运营的书:用伪语言写程序的呀,谁会呀,帮我!!!!

来源:百度文库 编辑:中科新闻网 时间:2024/05/05 21:44:38
有一单链表,有20个元素,按降序排列,现有一个元素b,要求将b插入列链表中,并将新链表按升序排列。
1、分析问题,写出解题思路。
2、用伪语言程序流程图描述函数等法。
3、写出程序

struct list[
int x;
struct list*next;
]

1.可以按顺序来,先将原链表倒置,变为升序,再将b插入正确位置。
2.将单链表倒置可采用从第二个结点开始逐个将结点从链表中移出,再插入到表头的方法。即:
q=head;
while(q->next!=NULL)
{
p=q->next;
q->next=p->next;
p->next=head;
head=p;
}
将b插入链表中并保持升序的过程是:
if(head->x >= b->x)
{
b->next=head;
head=b;
}
else
{
q=head;
p=head->next;
while(p != NULL && p->x < b->x)
{
q=p;
p=p->next;
}
b->next=p;
q->next=b;
}

我只会些Basic语言
不过你的那道题思路是很经典的
首先把添加新元素,就是第21个数
然后生成1~21的循环,设变量为i
再套入一个1~(i-1)的循环,设变量为j
比较第i个元素与第j个元素的大小,如果第i个元素比第j个元素的大,就调换它们的值
这样就能产生排(降)序的数列,通俗称“冒泡法”

while(链表没有到尾&&当前链表元素小于目标元素)
{
接上目标元素
}

void insert(float aa,struct node *vq)
{
struct node *newnode,*p;
newnode=(struct node *)malloc(sizeof(struct node));
newnode->data=aa;
p=vq;
while ((p->next!=null)&&(p->next->data>aa))
p->next=p->next->next;
newnode->next=p->next;
p->next=newnode;
vq->data=vq->data+1;
}

不会