1、实验1-1 顺序表的逆置操作
程序原码
#include
2、ist_size]; void init(); // 初始化操作 void inversion(); // 倒置部分 void creat(); // 建表部分 void display(); // 显示部分 //*************主函数****************** int main() { init(); creat(); printf("\n您输入的顺序表的结点数: \n"); display(); inversion();
3、 printf("\n倒置顺序表的结点数: \n"); display(); } //*************初始化操作分配空间****************** void init() { L.elem = (int *) malloc (max_list_size * sizeof(int) ); if (! L.elem) { printf("顺序表已满"); exit(-1); } L.length = 0; } //*************以下为建表部分*******
4、 void creat(){ int a, b, i; printf("请输入顺序表的结点数: "); scanf("%d", &a); if(a<=0){ printf("顺序表个数要为正整数!请重新输入: "); scanf("%d",&a); } if( a > max_list_size - 1 || a < 0 ) { printf("分配失败,退出程序! \n"); exit(1); } for( i = 0; i != a; ++i)
5、 { printf("请输入第%d结点的值: ", i+1); scanf("%d", &b); L.elem[i] = b; ++L.length; } } //****************以下为倒置部分********************** void inversion(){ int a, b, i; a = L.length; for( i = 1; i <= a/2; i++) { b = L.elem[i-1]; L.elem[i
6、1] = L.elem[a-i]; L.elem[a-i] = b; } } //****************以下为显示部分********************** void display(){ int i; for( i = 1; i <= L.length; ++i) printf("%d\t", L.elem[i-1]); printf("\n"); } 实验1-1 测试结果 输入一个正数、 输入一个负数、 实验1-2 单链表的逆置操作 程序原码 //
7、创建一个单链表,确定元素个数,插入各个元素,进行逆置操作,并输出。
#include
8、 Head); //逆置链表 void main() { PLNode Head; Head=Creat_Link(); //创建链表 printf("您输入的单链表为: \n"); Treaver_Link(Head); //输出链表 Reaverse_Link(Head); //逆置链表 printf("逆置后的的单链表为: \n"); Treaver_Link(Head); //输出链表 } //************以下为单链表的创建部分**************
9、
PLNode Creat_Link()
{
int i,t,y;
PLNode Head=(PLNode )malloc(sizeof(LNode));
PLNode tail;
PLNode New;
if(!Head){
exit(-1);
}
tail=Head;
Head->next=NULL;
printf("请输入链表的个数: ");
scanf("%d",&t);
if(t<=0){
printf("链表个数要为正整数!请重新输入: ");
scanf("%d",&t);
}
for(i=0;i 10、){
printf("请输入第%d个结点数据: ",i+1);
scanf("%d",&y);
New=(PLNode )malloc(sizeof(LNode));
if(!New){
exit(-1);
}
New->date=y;
New->next=tail->next;
tail->next=New;
tail=New;
}
return Head;
}
//************以下为单链表的逆置部分**************
void Reaverse_Link(PLNode Head)
{
PLNode 11、 p,q;
p=Head->next;
Head->next=NULL;
while(p){
q=p->next;
p->next=Head->next;
Head->next=p;
p=q;
}
return;
}
//************以下为单链表的显示部分**************
void Treaver_Link(PLNode Head)
{
PLNode p;
if(!Head->next){
printf("链表为空退出程序!");
exit(-1);
}
p=Head->next;
while(p){
printf("%d\t",p->date);
p=p->next;
}
printf("\n");
return;
}
实验1-2 测试结果
输入一个正数、
输入一个负数、
10 / 11






