none
高手留步指教!!谢谢了!!建立一个链表,链表初始长度为零,通过函数的插入到链表中,并能够显示出来。 RRS feed

  • 问题

  •  

    //作业2:建立一个链表,链表初始长度为零,通过函数的插入到链表中,并能够显示出来。

    #include <stdio.h>

    #define listinit 100

    //声明了一种新的数据类型。

    typedf struct 

    {

    int *elem;

    int length;

    int listsize;

    }sqlist;

    void main()

     int i;

     int initlist(sqlist &l);

     void insert(&l,int i,int e);

     void print(&l);

        initlist(sqlist &l);

    for(i=1;i<4;i++)

    {

         scanf("%d",&e);

         insert(&l,int i,int e);

    }

      print(&l);

    }

     

    int initlist(sqlist &l)

    {

    //构造一个空间的线性表l

      l.elem=(int *)malloc(listinit*sizeof(int));

         if(!l.elem)

       exit -2;//存储分配失败。

      l.length=0;

      listsize=listinit;

        return 1;

    }

    void insert(&l,int i,int e)

    {

      

      l.elem[i-1]=e;

      ++l.length;

    }

    void print(&l)

    {

    int j;

    for(j=0;j<3;j++)

       printf("%d",l.elem[j]);

       printf("%d",l.length);

    }

    2011年9月8日 14:36

答案

  • 您好, 以下Insert是插入函数,显示在main函数最后的那个循环 typedef struct node //链表节点定义 { int data; struct node *next; }NODE,*PNODE; void Insert(PNODE &list,int i,int data) { int cnt=1; PNODE temp; temp=list; while(temp->next!=NULL) { if(cnt==i-1) { PNODE link=New PNODE; link->data=data; link->next=temp->next; temp->next=link; return; } cnt++; temp=temp->next; } } void main() { PNODE plist, ptnode; int n; ptnode = plist = new NODE; ptnode->data = 3; ptnode->next = NULL; for(n = 0; n < 9; n++) { ptnode->next = new NODE; ptnode = ptnode->next; ptnode->data = n; ptnode->next = NULL; } while(plist !=NULL) { ptnode = plist; plist = plist->next; cout<< ptnode->data<<endl; delete ptnode; } }
    请大家多支持学生专区~~
    2011年9月9日 9:16
    版主

全部回复

  • hi,您好,

    您想问的问题是什么?Insert函数应该是,先从头节点开始数,当数到第i个元素的时候把新节点的指针给到第i-1个元素的elem中,将原来i-1中的elem给到新生成元素的elem中,注意先后顺序,不要把elem的值覆盖掉。后面的显示我不太明白,你要显示什么?要是全显示的话就挨个的显示就可以了~


    请大家多支持学生专区~~
    2011年9月9日 1:16
    版主
  • 就是建立一个线性表的顺序存储结构,向里面插入一系列的元素,最后把线性表中所有的元素都能够显示出来,就是这样!
    2011年9月9日 4:24
  • 您好, 以下Insert是插入函数,显示在main函数最后的那个循环 typedef struct node //链表节点定义 { int data; struct node *next; }NODE,*PNODE; void Insert(PNODE &list,int i,int data) { int cnt=1; PNODE temp; temp=list; while(temp->next!=NULL) { if(cnt==i-1) { PNODE link=New PNODE; link->data=data; link->next=temp->next; temp->next=link; return; } cnt++; temp=temp->next; } } void main() { PNODE plist, ptnode; int n; ptnode = plist = new NODE; ptnode->data = 3; ptnode->next = NULL; for(n = 0; n < 9; n++) { ptnode->next = new NODE; ptnode = ptnode->next; ptnode->data = n; ptnode->next = NULL; } while(plist !=NULL) { ptnode = plist; plist = plist->next; cout<< ptnode->data<<endl; delete ptnode; } }
    请大家多支持学生专区~~
    2011年9月9日 9:16
    版主