注册 登录
编程论坛 数据结构与算法

数据结构的尾部插入运算

你好,老表 发布于 2017-03-07 22:00, 1525 次点击
十分感谢阿尔法版主的指点!!!

我的问题是我想执行CreateLinkList2,为什么不行?CreateLinkList1可以执行.




#include <stdio.h>
#include <stdlib.h>
#define flag -1
typedef int DataType;
typedef struct Node
{
    DataType data;
   
    struct Node *next;
}LNode,*LinkList;

void CreateLinkList1(LinkList L)
{
    LNode *s;
    DataType x;
    printf("请输入一组数据(空格符号作为间隔,输入%d结束):",flag);
    scanf("%d",&x);
    while(x!=flag)
    {
        s=(LinkList)malloc(sizeof(LNode));
        
        s->data=x;
        s->next=L->next;
        L->next=s;
        scanf("%d",&x);
    }
}//头部插入结点建立单链表
void CreateLinkList2(LinkList L)
{
    LNode *r,*s;
    DataType x;
    printf("\n请输入一组数据(空格符号作为间隔,输入%d结束):",flag);
    scanf("%d",&x);
    r=L;
    while(x!=flag)
    {
        s=(LinkList)malloc(sizeof(LNode));
        
        s->data=x;
        r->next=s;
        r=s;
        scanf("%d ",&x);
    }
    r->next=NULL;
}
void PrintLinkList(LinkList L)
{
    LNode *p;
    p=L;
    while(p->next!=NULL)
    {
        p=p->next;
        printf("%d ",p->data);
    }
}//尾部插入


int main()
{   
    int s;
    LinkList L;
    L=(LinkList)malloc(sizeof(LNode));
    L->next=NULL;
    CreateLinkList1(L);PrintLinkList(L);
    CreateLinkList2(L);PrintLinkList(L);
   
}
1 回复
#2
炎天2017-03-08 09:11
尾插入法,要先把标记指针指向最后一个节点
程序代码:
void CreateLinkList2(LinkList L)
{
    LNode *r,*s;
    DataType x;
    printf("\n请输入一组数据(空格符号作为间隔,输入%d结束):",flag);
    scanf("%d",&x);
    r=L;
    while(r->next)
    {
        r=r->next;
    }
    while(x!=flag)
    {
        s=(LinkList)malloc(sizeof(LNode));
        
        s->data=x;
        
        r->next=s;
        r=s;
        scanf("%d ",&x);
    }
    r->next=NULL;
}
1