当前位置:首页 » 服务存储 » 给定一串数字用链表结构进行存储
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

给定一串数字用链表结构进行存储

发布时间: 2023-06-14 22:41:37

1. 键盘输入一组数字,用单链表形式存储,输入完成后分别按顺序和逆序输出所输入数字。

楼主你好
具体代码如下:
#include<stdio.h>
#include<stdlib.h>
#define MAX 80

typedef struct node
{
int data;
struct node *next;
}N;

N *head=(N *)malloc(sizeof(N));//创建头结点

void Creat()
{
N *p;//用于插入新节点
N *r=head;//尾指针 开始指向头结点

printf("请输入任意个数据(用回车结束输入、空格间隔:1 2 3……)\n:");
do{
p=(N *)malloc(sizeof(N));
scanf("%d",&p->data);
r->next=p;
r=p;
}while(getchar()!='\n');

r->next=NULL;
}

void Disp()//实现顺序输出和逆序输出
{
N *p=head->next;//用于遍历单链表
int a[MAX];
int i=0,j;

printf("顺序输出:\n");
while(p)
{
printf("%d ",p->data);
a[i]=p->data;
p=p->next;
i++;
}
printf("\n逆序输出:\n");
for(j=i-1;j>=0;j--)
printf("%d ",a[j]);
printf("\n");
}
void main()
{
Creat();
Disp();
}

希望能帮助你哈

2. 用链表的形式存储一个字符串 按正序和逆序输出字符串(数据结构考试)

这个字符串的输出,考虑到有正序和逆序,采用链表,可以考虑用双链表。这样输出效率会比较高。

建议用循环双链表(带头结点),方便程序处理,简化操作流程,步骤明晰,便于调试。

关键函数可分为:

1,结构的定义

2,初始化链表

3,输出(正序,逆序)

4,释放链表

5,主函数

以下C语言代码在VC6.0中编译通过:

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

#include<malloc.h>

#include<string.h>

/*定义*/

typedefstructnode

{

charc;

structnode*llink,*rlink;

}stud;

/*建立链表*/

stud*creat(void)

{

stud*p,*h,*s;

chara;

if((h=(stud*)malloc(sizeof(stud)))==NULL)

{

printf("不能分配内存空间!");

exit(0);

}

h->c=0;

h->llink=NULL;

h->rlink=NULL;

p=h;

while(1)

{

a=getchar();

if(a==' ')

break;

if((s=(stud*)malloc(sizeof(stud)))==NULL)

{

printf("不能分配内存空间!");

exit(0);

}

p->rlink=s;

s->c=a;

s->llink=p;

s->rlink=NULL;

p=s;

}

h->llink=s;

p->rlink=h;

return(h);

}

/*正序*/

voidprint1(stud*h)

{

stud*p;

p=h->rlink;

printf("字符串(正序):");

while(p!=h)

{

printf("%c",p->c);

p=p->rlink;

}

printf(" ");

}

/*逆序*/

voidprint2(stud*h)

{

stud*p;

p=h->llink;

printf("字符串(逆序):");

while(p!=h)

{

printf("%c",p->c);

p=p->llink;

}

printf(" ");

}

/*释放*/

voidfree_stud(stud*h)

{

stud*p,*q;

p=h->llink;

while(p!=h)

{

q=p;

p=p->llink;

free(q);

}

free(h);

}

/*主函数*/

intmain()

{

stud*head=NULL;

head=creat();

print1(head);

print2(head);

free_stud(head);

return0;

}