用C/C++语言实现简单的链表

代码中需要注意的一些事项

1.head == NULL因为链表还没有被创建所以头指针应为空

2.创建头指针的主要目的还是为了方便遍历链表

3.if(head==NULL)
            head = p;
      else
            q->next = p;

这段代码的意思是如果没有头指针就让p去当头指针,如果有头指针就让头指针的指针指向p的地址

4.q=p因为p等下还要去创建其它节点所以把p赋值给q

5.使用malloc开辟内存想着使用free命令去释放掉内存

C++示例代码如下:

//尝试来实现一波链表 
//输入:
// 5
//1 2 3 4 5
//输出:
//1 2 3 4 5 
#include 
#include 
using namespace std;
struct node
{
	int data;
	struct node *next;
};
int main()
{
	system("color f5");
	struct node *p,*q,*head,*t;
	int a,b,c,d;
	cin >> a;
	head = NULL; 
	for(b=0;b> c;
		p = (struct node *)malloc(sizeof(struct node ));
		p->data = c;
		p->next = NULL;
		if(head==NULL)
		{
			head = p;
		}
		else
		{
			q->next = p;
		}
		q=p;
	}
	t = head;
	while(t!=NULL)
	{
		cout << t->data; 
		t=t->next;
	} 
	free(p);//使用free命令释放掉动态申请的内存 
	system("pause");
	return 0;
}

C语言代码如下

//尝试来实现一波链表 
//输入:
// 5
//1 2 3 4 5
//输出:
//1 2 3 4 5 
#include 
#include //使用malloc动态内存分配必须使用此头文件 

struct node
{
	int data;//用于存储数据 
	struct node *next;//指针域用于存储下一个结点的地址  
};//注意细节 
int main()
{
	system("color f5");
	int n;
	scanf("%d",&n);
	struct node *p,*head,*q,*t;
	int a,b,c,d,i;
	head = NULL;//把头指针设为空 
	for(i=0;idata = a;//输入的就是数据嘛!所以当然要把其放在数据域上喽 
		p->next = NULL;//当前仅仅创建的是第一个结点,所以当然要让其指针域为空 
		if(head==NULL)
		{
			head = p;
		}
		else
		{
			q->next = p;
		}
		q = p; 
	}
	t = head;
	while(t!=NULL)
	{
		printf("%d",t->data);
		t=t->next;
	} 
	system("pause");
	return 0;
} 

你可能感兴趣的:(链表,c++,数据结构)