3道数据结构编程题~~~

来源:百度知道 编辑:UC知道 时间:2024/05/22 04:45:49
1.编写一个算法,将数据元素x插入非递减有序顺序表中,并使插入后的线性表仍非递减有序
2.编程实现带头结单链表的就地逆置
3.用10,20,30,40,50作为结点数据域建立带头结点的单链表;在该链表的第3位置前插入数据元素25;删除该链表第2个元素;显示该链表各数据元素的值
以上3题~~~谢谢了

我只给你下思路,
1.你意思就是元素是按升序排的,可以先一个变量得到你顺序表的首地址,之后一直和你要插入的元素比较大小,找到适当的位置后,就可插入
(1)
#include<stdio.h>
#include<stdlib.h>
#define LIST_INIT_SIZE 100//表初始大小
typedef struct
{
int *elem;
int length;
}SqList; //顺序表的结构

int main()
{
int i,j,k;
SqList sheet; //这里为了简便直接赋值
sheet.elem = (int*)malloc(LIST_INIT_SIZE*sizeof(int));
sheet.elem[0] = 1;//赋值
sheet.elem[1] = 2;
sheet.elem[2] = 4;
sheet.length = 3;
//如现在要插入一个3的元素
i = 3;
for(j=0;j<sheet.length;++j)
if(sheet.elem[j]>=i)
break; //找到了便退出
for(k=sheet.length-1;k>=j;--k) //将元素向后移一位
{
sheet.elem[k+1] = sheet.elem[k];
}
sheet.elem[j] = i; //插入元素
for(k=0;k<4;++k)
printf("%d ",sheet.elem[k]);
return 0;
}

(2)这里是写个大概,具体要自己修改
#include<stdio.h>
#include<stdlib.h>

typedef struct LN