学习顺序表以及单链表过程中遇到的困难
课上听着老师的讲解以为自己动手是能够很容易完成一个线性表的创建,但是事实并不是这样。
创建一个线性表需要足够清晰的思路!
下面是一个顺序表的创建:
#include <iostream>
using namespace std;
struct List
{
int data[100];
int length;
};
void Createlist(int n,List &L)
{
L.length=n;
for(int i=0;i<n;i++)
{
cin>>L.data[i];
}
}
void Showlist(int n,List L)
{
for(int i=0;i<n-1;i++) cout<<L.data[i]<<" ";
cout<<L.data[n-1];
}
int main()
{
int n;
List list;
cin>>n;
if(n!=0) Createlist(n,list);
if(n!=0) Showlist(n,list);
return 0;
}
下面是一个单链表的创建:
#include <iostream>
using namespace std;
typedef struct Node
{
int data;
Node *next;
}Node,*LinkList;
int InitList(LinkList&L)
{
L = new Node ;
L->next = NULL ;
return 1;
}
void CreateList(int n,LinkList&L)
{
Node *p,*r;
r=L;
for(int i=0;i<n;i++)
{
p=new Node;
cin>>p->data;
p->next=NULL;
r->next=p;
r=p;
}
}
void PrintList(int n,LinkList&L)
{
Node*p=L->next;
for(int i=0;i<n;i++)
{
if(p->next!=NULL) cout<<p->data<<" ";
else cout<<p->data;
p=p->next;
}
// while(p)
// {
// if(p->next!=NULL) cout<<p->data<<" ";
// else cout<<p->data;
// p=p->next;
// }
}
int main()
{
LinkList L;
InitList(L);
int m;
cin>>m;
CreateList(m,L);
PrintList(m,L);
return 0;
}
初识线性表,还需继续练习才行!