1 线性表 单链表逆置 //已知单链表H,写一个算法将其逆置 //H->head->32->63->18->50->26->NULL #include #include typedef struct node { char data; //data 为结点数据信息 struct node *next; //next 为指向后继结点的指针 }LNode; //单链表数据类型 LNode *CreateLinkList() // 生成单链表 { LNode *head,*p,*q; char x; head=(LNode *)malloc(sizeof(LNode)); //生成头结点 head->next=NULL; p=head; q=p; //q始终指向链尾结点 printf("Input any char string:\n"); scanf("%c",&x); while(x
='\n') { p=(LNode *)malloc(sizeof(LNode)); p->data=x; p->next=NULL; q->next=p; //在链尾插入 q=p; scanf("%c",&x); } return head; //返回指向单链表的头指针head } void Convert(LNode *H) //单链表的逆置 { LNode *p,*q; p=H->next; //p 指向剩余结点链表的第一个数据结点 H->next=NULL; //新链表H 初始为空 while(p
=NULL) { q=p; //从剩余结点链表中取出第一个结点 p=p->next; //p 继续指向剩余结点链表新的第一个数据结点 2 q->next=H->next; //将取出的结点*q 插入到新链表H 的链首 H->next=q; } } void main() {