上学期C++老师教链表的时候没有认真听,这学期要补回来。今天就先来写一写链表的创建的基本的代码,输入输出的。
//正序输入输出
#include <stdio.h>
#include <stdlib.h>
struct node
{
int num;
struct node*next;
};
struct node*creat(int n)//链表的录入
{
struct node*head,*p,*q;
head = (struct node*)malloc(sizeof(struct node));
head->next = NULL;
q = head;
for(int i = 1;i<=n;i++)
{
p = (struct node*)malloc(sizeof(struct node));
scanf("%d",&p->num);
p->next = NULL;
q->next = p;
q = p;
}
return head;
}
void show(struct node*head)//链表的输出
{
struct node*tail;
tail = head->next;
while(tail!=NULL)
{
if(tail->next==NULL)
printf("%d\n",tail->num);
else
printf("%d ",tail->num);
tail = tail->next;
}
}
int main()
{
int n;
scanf("%d",&n);
struct node*head;
head = creat(n);
show(head);
return 0;
}
//逆序的
#include <stdio.h>
#include <stdlib.h>
struct node
{
int num;
struct node*next;
};
struct node*creat(int n)
{
struct node*head,*p,*q;
head = (struct node*)malloc(sizeof(struct node));
head->next = NULL;
q = head;
for(int i = 1;i<=n;i++)
{
p = (struct node*)malloc(sizeof(struct node));
scanf("%d",&p->num);
head->next = p->next;//××××
head->next = p;//××××
}
return head;
}
void show(struct node*head)
{
struct node*tail;
tail = head->next;
while(tail!=NULL)
{
if(tail->next==NULL)
printf("%d\n",tail->num);
else
printf("%d ",tail->num);
tail = tail->next;
}
}
int main()
{
int n;
scanf("%d",&n);
struct node*head;
head = creat(n);
show(head);
return 0;
}
先这样写吧,以后可能会更改。