#include<stdio.h>
#include<malloc.h>
typedef int DataType;
//数据结构的定义
typedef struct node{
DataType data;
struct node *next;
}LinkNode,*LinkList;
//利用尾插法建立链表
LinkNode *CreateList()
{
LinkNode *head,*p,*q; //p指针为过度指针,q为申请的新节点
DataType data;
int flag=1;
head=p=(LinkNode *)malloc(sizeof(LinkNode)); //申请头节点
while(flag){
scanf("%d",&data);
if(data > 0){
q=(LinkNode *)malloc(sizeof(LinkNode));
q->data=data;
p->next=q;
p=q;
}else{
flag=0;
p->next=NULL;
}
}
return head;
}
//利用头插法的思想逆置
void ReverseList(LinkList head)
{
LinkList p,q;
p=head->next;
head->next=NULL;
while(p != NULL){
q=p->next;
p->next=head->next;
head->next=p;
p=q;
}
}
//打印链表
void PrintList(LinkList head)
{
LinkList q;
q=head->next;
while(q!=NULL){
printf("%-3d",q->data);
q=q->next;
}
printf("\n");
}
int main(int args,int *argv[])
{
LinkNode *head;
printf("please input the list:\n");
head=CreateList();
printf("print the list:\n");
ReverseList(head);
PrintList(head);
}
单链表的逆置
最新推荐文章于 2021-03-31 19:10:57 发布