B 链表操作

B 链表操作

时间: 1ms        内存:128M

描述:

(1)编写一个函数createlink,用来建立一个动态链表(链表中的节点个数由参数count来控制)。

节点结构如下:

struct Node
{
int data;
Node * next;
};

函数createlink的声明如下:

Node * createlink(int count);

(2)编写一个函数printlink,用来遍历输出一个链表。

函数printlink的声明如下:

void printlink(Node * head);

(3) 在主程序中调用函数createlink来动态创建链表,然后调用printlink函数遍历输出链表节点数据。

主程序如下:(提交时不用提交主程序)

int main()
{
Node * head=NULL;
int n;
cin>>n;
head=createlink(n);
printlink(head);
return 0;
}

输入:

输入要建立链表的节点个数
输入各个节点的数据

输出:

输出链表中各个节点的数据

示例输入:

4
1 2 3 4

示例输出:

1 2 3 4

提示:

参考答案(内存最优[1092]):

#include<stdio.h>
int main()
{
    int i,n;
    scanf("%d",&n);
    int a[n];
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
     for(i=0;i<n;i++)
     {
          printf("%d",a[i]);
          if(i==n-1)break;
          printf(" ");
     }

    return 0;
}

参考答案(时间最优[0]):

#include <iostream>
using namespace std;
struct Node
{
int data;
Node * next;
};
Node * createlink(int i)
{

    Node *head,*s,*p;
    s=new Node;
    head=NULL;
    while(i!=0)
    {
        cin>>s->data;
        if(head==NULL)
            head=s;
        else p->next=s;
        p=s;
        s=new Node;

        i--;
    }
    p->next=NULL;
    delete s;
    return (head);

}
void printlink(Node * head)
{
    Node *p=head;
        do
        { cout<<p->data<<" ";
        p=p->next;
        }while(p!=NULL);

}
int main()
{
	Node * head=NULL; 
	int n;
	cin>>n;
	head=createlink(n);
	printlink(head);
       return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注