实验1链表的建立与操作
实验1链表的建立与操作
实验目的: 掌握链表数据结构的建立及操作
实验重点: 利用链表的原空间进行链表的反转
实验内容:设计一个将输入数据建立成链表、并依次输出链表数据、利用原空间把链表反转的程序。
实验步骤:
1. 掌握链表的数据结构
2. 建立空链表
3. 用头插法向链表插入数据,实验数据:
验证数据:20,20,17,16,15,15,11,10,8,7,7,5,4
4. 依次输出链表中的数据
5. 利用链表原空间进行对链表进行反转
6. 依次输出反转后的链表数据,以判断反转操作的正确性,最后一个元素是否正确
7,进阶要求:完成P40 3.6.1的功能
实验提示:
// test1.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include
#include
typedef struct Node{
int data;
struct Node *next;
}Node, *linklist;
void Input(linklist *L, int n)
{
linklist p;
int i;
*L = (linklist)malloc(sizeof(Node));
(*L)->next = NULL;
for (i = 0; i
p = (linklist)malloc(sizeof(Node));
scanf("%d", &p->data);
p->next = (*L)->next;
(*L)->next = p;
}
}
void Output(Node *L, int n){
int i;
for (i = 0; i
L = L->next;
printf("%d", L->data);
printf("\n");
}
}
void reverse(linklist L, int n)
{
linklist p, r;
p = L->next;
int i;
for (i = 1; i
r = p->next;
p->next = L->next;
L->next = p;
p = r;
}
}
void main(){
int n;
Node *L;
printf("输入元素个数:"); scanf("%d", &n);
printf("请输入这%d个元素:",n); Input(&L, n);
reverse(L, n);
printf("链表的原顺序为:\n"); Output(L, n);
reverse(L, n);
printf("链表逆置后的顺序为:\n"); Output(L, n);
system("pause");
}
实验结果