将两个带头节点链表单链表,合并成一个新的带头节点链表……

来源:互联网 发布:python 类 私有变量 编辑:程序博客网 时间:2024/05/10 23:23

问题链接……


#include<stdio.h>#include<stdlib.h>typedef struct LNode{  int data;  struct LNode *next;}LNode,*LinkList;LinkList link(LinkList S,LinkList T)//将S,T链接成新的链表并返回新链表指针……{LinkList p,q,r;p=q=(LinkList)malloc(sizeof(LNode));//带头节点while(S->next!=NULL)//复制S链表{r=(LinkList)malloc(sizeof(LNode));r->data=S->next->data;q->next=r;q=r;S=S->next;}//q->next=T->next;//如果这样的的话,可以直接返回值,虽然没改变S,T的原有结构,但只要改变T,那么p的值也会变,改变S,p的值不会变while(T->next!=NULL)//链接复制T链表{r=(LinkList)malloc(sizeof(LNode));r->data=T->next->data;q->next=r;q=r;T=T->next;}q->next=NULL;return p;//返回复制链表指针}void main(){LinkList S,T,P,q,r;int k=10;S=q=(LinkList)malloc(sizeof(LNode));//S带头节点while(k)//为S分配空间及赋值{r=(LinkList)malloc(sizeof(LNode));r->data=k;q->next=r;q=r;k--;}q->next=NULL;//S的最后一个节点的下一个节点置空k=10;T=q=(LinkList)malloc(sizeof(LNode));//T带头节点while(k)//为T分配空间及赋值{r=(LinkList)malloc(sizeof(LNode));r->data=10-k;q->next=r;q=r;k--;}q->next=NULL;//T的最后一个节点的下一个节点置空P=link(S,T);//调用函数得到S,T链接后的新链表printf("S:\n");//下面为输出各链表的值while(S->next!=NULL){printf("%d ",S->next->data);S=S->next;}printf("\nT:\n");while(T->next!=NULL){printf("%d ",T->next->data);T=T->next;}printf("\nP:\n");while(P->next!=NULL){printf("%d ",P->next->data);P=P->next;}printf("\n\n");}


原创粉丝点击