代码实现
#include<malloc.h>
#include<stdio.h>
//创建结点结构
typedef struct Lnode{
int data; //数据域
struct Lnode *next; //指针域
}Lnode,*Linklist;
//顺序创建链表
void input(Linklist &L){
Linklist p,q; //辅助变量
char ch;
L=(Linklist)malloc(sizeof(Lnode)); //为头结点L分配存储空间
L->next=NULL; //头结点置为空
q=L; //q指向L
p = (Linklist)malloc(sizeof(Lnode)); //为新结点P分配存储空间
printf("请输入元素:");
scanf("%d",&p->data);
while(p->data!=-999){
p->next=q->next;
q->next=p;
q=p;
p = (Linklist)malloc(sizeof(Lnode)); //为新结点P分配存储空间
printf("请输入元素:");
scanf("%d",&p->data);//循环创建p、输入结点数据
}
}
//输出链表元素
void output(Linklist L){
Linklist p; //辅助变量
p=L->next;
while(p!=NULL){
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
//链表逆置函数
void NLinklist(Linklist &L){
Linklist p,s;
p=L->next;
L->next=NULL;
while(p){
s=p;
p=p->next;
s->next=L->next;
L->next=s;
}
}
int main(){
Linklist L;
printf("输入L中元素值,最后以“-999 ”结束输入:\n\n");
input(L);
printf("输出L验证是否为指定元素:\n");
output(L);
printf("\n");
NLinklist(L);
printf("\n******将L进行逆置******\n\nL逆置后的内容为:\n");
output(L);
}
运行结果