谁能提供一个C语言结构体实现链表的例子,代码能直接运行的?
3个回答
展开全部
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
typedef struct Node
{
int key;
Node * next;
}Node; //定义结构
int main()
{
int *a,n,i;
Node* L0,*p;
scanf("%d",&n);//输入链表长度
a=(int*)malloc(sizeof(int)*n);//给数组a动态分配n个空间
L0=(Node*)malloc(sizeof(Node));
L0->next=NULL; //建立头结点
srand((unsigned)time( NULL ) ); //与rand()函数一起使用
for(i=0;i<n;i++)
{
a[i]=rand()%100; //产生100以内的随机数,也可以自己输入
}
for(i=0;i<n;i++)
{
p=(Node*)malloc(sizeof(Node));
p->key=a[i]; //分配一个结点空间,并赋值
p->next=L0->next;
L0->next=p; //连接单链表,这里是精髓
}
while(L0->next)
{
L0=L0->next;
printf("%d ",L0->key); //遍历单链表
}
return 0;
}
还是自己把链表弄懂吧,很有意思的,也是数据结构的基础内容。
#include "stdlib.h"
#include "time.h"
typedef struct Node
{
int key;
Node * next;
}Node; //定义结构
int main()
{
int *a,n,i;
Node* L0,*p;
scanf("%d",&n);//输入链表长度
a=(int*)malloc(sizeof(int)*n);//给数组a动态分配n个空间
L0=(Node*)malloc(sizeof(Node));
L0->next=NULL; //建立头结点
srand((unsigned)time( NULL ) ); //与rand()函数一起使用
for(i=0;i<n;i++)
{
a[i]=rand()%100; //产生100以内的随机数,也可以自己输入
}
for(i=0;i<n;i++)
{
p=(Node*)malloc(sizeof(Node));
p->key=a[i]; //分配一个结点空间,并赋值
p->next=L0->next;
L0->next=p; //连接单链表,这里是精髓
}
while(L0->next)
{
L0=L0->next;
printf("%d ",L0->key); //遍历单链表
}
return 0;
}
还是自己把链表弄懂吧,很有意思的,也是数据结构的基础内容。
展开全部
//输入四个数字,存入单链表,然后显示出来。有任何问题,就追问我,我还是挺厚道滴。。。
#include "stdio.h"
#include "malloc.h"
struct node{ int data; struct node * next;};
struct node * head = ( struct node *) malloc ( sizeof( node));
//头插法添加元素
void Add(){
struct node * make = ( struct node *) malloc ( sizeof( node));
scanf( "%d", & make->data);
make ->next = head->next;
head->next = make;
}
//显示所有
void Display(){
struct node * p = head->next;
while( p){
printf( "%d\n", p->data); p = p->next;
}
}
//主函数
int main(){
int i;
head ->next = NULL;
for( i = 1; i < 5; i++){
printf( "\ninput the %dth data:", i);
Add();
}
Display();
return 0;
}
#include "stdio.h"
#include "malloc.h"
struct node{ int data; struct node * next;};
struct node * head = ( struct node *) malloc ( sizeof( node));
//头插法添加元素
void Add(){
struct node * make = ( struct node *) malloc ( sizeof( node));
scanf( "%d", & make->data);
make ->next = head->next;
head->next = make;
}
//显示所有
void Display(){
struct node * p = head->next;
while( p){
printf( "%d\n", p->data); p = p->next;
}
}
//主函数
int main(){
int i;
head ->next = NULL;
for( i = 1; i < 5; i++){
printf( "\ninput the %dth data:", i);
Add();
}
Display();
return 0;
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
结构体动态链表的创建
struct goods *creat()
{ struct goods *head;//头指针
struct goods *p1,*p2;
n=0;//计数
p1=p2=new struct goods;
scanf("%d%s%d%d%f%s%s",&p1->num,p1->name,&p1->guige,&p1->count,&p1->price,p1->supplier,p1->indate);
head=NULL;
while(p1->num!=0)
{ n+=1;
if(n==1) head=p1;
else p2->next=p1;
p2=p1;
p1=new struct goods;
scanf("%d%s%d%d%f%s%s",&p1->num,p1->name,&p1->guige,&p1->count,&p1->price,p1->supplier,p1->indate);
}
p2->next=NULL;
return head;
}
以上为结构体链表的创建,以下是文本读入的方式:
struct goods *creat(FILE *p) //p为文件指针
{ struct goods *head;//头指针
struct goods *p1,*p2;
n=0;//计数
p1=p2=new struct goods;
fscanf(p,"%d%s%d%d%f%s%s",&p1->num,p1->name,&p1->guige,&p1->count,&p1->price,p1->supplier,p1->indate);
head=NULL;
while(p1->num!=0)
{ n+=1;
if(n==1) head=p1;
else p2->next=p1;
p2=p1;
p1=new struct goods;
fscanf(p,"%d%s%d%d%f%s%s",&p1->num,p1->name,&p1->guige,&p1->count,&p1->price,p1->supplier,p1->indate);
}
p2->next=NULL;
return head;
}
struct goods *creat()
{ struct goods *head;//头指针
struct goods *p1,*p2;
n=0;//计数
p1=p2=new struct goods;
scanf("%d%s%d%d%f%s%s",&p1->num,p1->name,&p1->guige,&p1->count,&p1->price,p1->supplier,p1->indate);
head=NULL;
while(p1->num!=0)
{ n+=1;
if(n==1) head=p1;
else p2->next=p1;
p2=p1;
p1=new struct goods;
scanf("%d%s%d%d%f%s%s",&p1->num,p1->name,&p1->guige,&p1->count,&p1->price,p1->supplier,p1->indate);
}
p2->next=NULL;
return head;
}
以上为结构体链表的创建,以下是文本读入的方式:
struct goods *creat(FILE *p) //p为文件指针
{ struct goods *head;//头指针
struct goods *p1,*p2;
n=0;//计数
p1=p2=new struct goods;
fscanf(p,"%d%s%d%d%f%s%s",&p1->num,p1->name,&p1->guige,&p1->count,&p1->price,p1->supplier,p1->indate);
head=NULL;
while(p1->num!=0)
{ n+=1;
if(n==1) head=p1;
else p2->next=p1;
p2=p1;
p1=new struct goods;
fscanf(p,"%d%s%d%d%f%s%s",&p1->num,p1->name,&p1->guige,&p1->count,&p1->price,p1->supplier,p1->indate);
}
p2->next=NULL;
return head;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询