加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

数据结构-单链表的创建

(2013-08-14 16:06:04)
标签:

it

分类: 数据结构

            数据结构-单链表的创建

时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte
总提交:139 测试通过:79

描述

 

 

单链表的创建可以分两步完成,第一步,初始化单链表,向系统申请单链表头节点,设置单链表的初始长度为0和初始开辟的内存空间大小;第二步通过输入的数据元素逐个插入数据元素到单链表,最终完成创建单链表。下面请采用逆向插入的方法创建一个单链表,即从空表的初始状态开始,依次建立各个元素结点,并逐个插入到单链表中,插入要求从表尾到表头逆向建立。

请用如下函数完成上述功能,线性表List的定义如下(强烈建议使用下面的定义和函数结构)

typedef struct List
{
Elemtype *elem;
int length;
int listsize;
};

int CreateList_L(LinkList &L,int n)

输入

输入有多组测试数据,每组测试数据包括2行,第一行是一个字符串和一个数字N代表要创建单链表的名称和长度。第二行是要创建的N个元素的数据。

输出

输出每组数据的单链表的创建结果。

样例输入

 

L2 5
129 32 156 73 17
L3 11
27 137 50 14 22 133 120 89 7 126 179

样例输出

 

CreateList_L(L2, 5) : L2 = ( 129 32 156 73 17 )
CreateList_L(L3, 11) : L3 = ( 27 137 50 14 22 133 120 89 7 126 179 )
//**************************************
#include <iostream>
#include <string>
using namespace std;
typedef struct LNode
{
    int data;
    struct LNode*next;
}LNode,*List;
//The first task
void CreateList(List &L,int n,int c[])
{
 int i;
    LNode *p;
    L=(List)malloc(sizeof(LNode));
    L->next=NULL;
    for(i=n-1;i>=0;i--)
    {
        p=(List)malloc(sizeof(LNode));
        p->data=c[i];
        p->next=L->next;
        L->next=p;
   
}
//The main function
int main()
{
 List L;
 int n,*c,i;
 char a[3];
 while(cin>>a>>n)
 {
  c=new int[n];
  for(i=0;i<n;i++)
   cin>>c[i];
  CreateList(L,n,c);
  cout<<"CreateList_L("<<a<<", "<<n<<") : "<<a<<" = ( ";
  for(i=0;i<n;i++)
  {
   L=L->next;
   cout<<L->data<<' ';
  }
  cout<<")"<<endl;
 }
 return 0;
}

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有