带头节点的单链表的逆置

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

带头结点的单链表的逆置程序

#include

#include

#include

#define NULL 0

#define OK 1

typedef int ElemType;

typedef int Status;

//-----单链表的存储结构-----//

typedef struct LNode{

ElemType data;

struct LNode *next;

}LNode,*LinkList;

void CreastList_L(LinkList &L,int n)

{

//----创建带头结点的单链表L-----//

LNode *p,*q;

int i;

L=(LNode*)malloc(sizeof (LNode));

L->next=NULL; //先建立一个带头结点的单链表

p=L;

for (i=1;i<=n;i++){

q=(LNode*)malloc(sizeof(LNode)); //生成新结点printf("Input the %dth data:",i);

scanf("%d",&q->data); //输入元素值

q->next=NULL;

p->next=q;

p=q;

}

}

void ListInverse_L(LinkList &L)

{

//----单链表的就地逆置----//

LNode *p,*q;

p=L->next;

L->next=NULL;

while(p!=NULL)

{

q=p->next;

p->next=L->next;

L->next=p;

p=q;

}

}

void PrintList(LinkList &L)

{

//----输出单链表----//

LNode *p=L->next;

while(p!=NULL)

{

printf("%d",p->data);

p=p->next;

}

}

void main()

{

int n;

LinkList La;

printf("Input the list num:");

scanf("%d",&n);

CreastList_L(La,n);

printf("Before Inverse the list is:");

PrintList(La);

ListInverse_L(La);

printf("\nAfter Inverse the list is:");

PrintList(La);

printf("\n");

}

//-----------------------------------------------运行结果---------------------------------------------//

Input the list num: 5

Input the 1th data: 9

Input the 1th data: 8

Input the 1th data: 7

Input the 1th data: 6

Input the 1th data: 5

Before Inverse the list is : 98765

After nverse the list is :56789

Press any ker to continue

相关文档
最新文档