#include<stdio.h>/*带头结点单链表的就地逆转,王红刚2009/08/10完成*/#include<stdlib.h>/*程序用作学习交流,如要转载请注明出处!!·*/#include <malloc.h>#define ERROR 0#define OK 1typedef char ElemType;typedef struct Node { ElemType data; struct Node *next;}Node,*LinkList;/*LinkList为结构指针类型,用来说明头指针变量*/void initlinklist(LinkList *L)/*初始化单链表*/{ *L=(LinkList)malloc(sizeof(Node)); (*L)->next=NULL;}void Create(LinkList L)/*建立单链表*/{ Node *s,*r; char c; int flag=1; r=L; while(flag) { c=getchar(); if(c!='#')/*当输入#时建表结束*/ { s=(Node *)malloc(sizeof(Node)); s->data=c; r->next=s; r=s; } else { flag=0; r->next=NULL; } }}void ReverseList(LinkList L)//逆转函数,其中L为单链表的头指针{ Node *q,*p; p=L->next; L->next=NULL; while(p!=NULL) { q=p->next; p->next=L->next; L->next=p; p=q; }}void print(LinkList L)//输出链表函数{ Node *r; r=L->next; printf("逆转后的单链表为:/n"); while(r!=NULL) { printf("%c ",r->data); r=r->next; }}void main(){ LinkList l; Node *p,*q; initlinklist(&l); printf("建立单链表,请输入链表数据,以#结束!/n"); Create(l); ReverseList(l); print(l);}#include<stdio.h>/*带头结点单链表的就地逆转,王红刚2009/08/10完成 你的当前访问异常,请进行认证后继续阅读剩余内容。 提交