当前位置:首页 > (数据结构C语言版)顺序表和单链表的逆置
实验1-1 顺序表的逆置操作
程序原码
#include
#define max_list_size 100 //定义给顺序表分配空间大小 typedef struct{ int *elem; int length;
}list_node; //指向顺序表首地址的结构体单元
list_node L; //这里使用了全局变量,在所有的函数里可以随意修改其值
int list[max_list_size];
void init(); // 初始化操作 void inversion(); // 倒置部分 void creat(); // 建表部分 void display(); // 显示部分
//*************主函数****************** int main() {
init(); creat(); printf(\您输入的顺序表的结点数: \\n\ display(); inversion(); printf(\倒置顺序表的结点数: \\n\ display(); }
//*************初始化操作分配空间****************** void init() {
L.elem = (int *) malloc (max_list_size * sizeof(int) ); if (! L.elem) {
printf(\顺序表已满\ exit(-1); }
L.length = 0; }
//*************以下为建表部分****************** void creat(){ int a, b, i;
printf(\请输入顺序表的结点数: \
scanf(\
if(a<=0){ printf(\顺序表个数要为正整数!请重新输入: \ scanf(\ }
if( a > max_list_size - 1 || a < 0 ) {
printf(\分配失败,退出程序! \\n\ exit(1); }
for( i = 0; i != a; ++i) {
printf(\请输入第%d结点的值: \ scanf(\ 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-1] = L.elem[a-i]; L.elem[a-i] = b; } }
//****************以下为显示部分********************** void display(){ int i;
for( i = 1; i <= L.length; ++i) printf(\ printf(\}
1
实验1-1 测试结果 输入一个正数、
输入一个负数、
实验1-2 单链表的逆置操作
程序原码
//创建一个单链表,确定元素个数,插入各个元素,进行逆置操作,并输出。 #include
// 单链表的链式存储结构 typedef struct Node { int date; struct Node *next;
2
}LNode,*PLNode;
PLNode Creat_Link(); //创建链表 void Treaver_Link(PLNode Head); //输出链表 void Reaverse_Link(PLNode Head); //逆置链表
void main() {
PLNode Head;
Head=Creat_Link(); //创建链表 printf(\您输入的单链表为: \\n\ Treaver_Link(Head); //输出链表 Reaverse_Link(Head); //逆置链表 printf(\逆置后的的单链表为: \\n\ Treaver_Link(Head); //输出链表 }
//************以下为单链表的创建部分************** 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(\
if(t<=0){ printf(\链表个数要为正整数!请重新输入: \ scanf(\ } for(i=0;i 3
共分享92篇相关文档