所在位置:主页 > 程序语言 > c语言编程 关于顺序存储与链式存储

c语言编程 关于顺序存储与链式存储

发布时间:2023-12-30 04:53来源:www.sf1369.com作者:宇宇

c语言编程 关于顺序存储与链式存储

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

struct node

{

int data;

node *next;

};

node *create(int a[],int len)

{

int i;

node *head=new node;

head->data=a[0];

node *p=head;

node *q;

for(i=1;i<len;i++)

{

q=new node;

q->data=a[i];

p->next=q;

p=q;

}

p->next=NULL;

return head;

}

node * insert(node *head,int k)

{

node *temp=new node;

temp->data=k;

temp->next=head;

head=temp;

return head;

}

node *dele(node *head,int m)

{

int i;

node *p=head;

node *x=new node;

node *y=new node;

if(m==1)

{

node *q=head;

head=head->next;

free(q);

}

else

{

for(i=1;i<m;i++)

{

x=p;

p=p->next;

y=p->next;

}

x->next=y;

free(p);

}

return head;

}

void main()

{

int a[10]={1,2,3,4,5,6,7,8,9,10};

int len=10;

node *head=new node;

head=create(a,len);

node *p=head;

printf(原数组为:);

while(p!=NULL)

{

printf(%d ,p->data);

p=p->next;

}

printf(\n输入要插入的元素:);

int k;

scanf(%d,&k);

head=insert(head,k);

p=head;

printf(增加元素后的数组为:);

while(p!=NULL)

{

printf(%d ,p->data);

p=p->next;

}

printf(\n要删除的元素位置为:);

int m;

scanf(%d,&m);

head=dele(head,m);

p=head;

printf(删除元素后的数组为:);

while(p!=NULL)

{

printf(%d ,p->data);

p=p->next;

}

}此处为链表实现的方式,链表的好处在于内存不必连续,并且顺序存储

顺序存储结构的特点是:连续的内存,随机存储。

C语言数据文件有几种存储方式?每种存储形式各有什么特点?

一、auto

auto称为自动变量。

局部变量是指在函数内部说明的变量(有时也称为自动变量)。用关键字auto进7行说明, 当auto省略时, 所有的非全程变量都被认为是局部变量, 所以auto实际上从来不用。

局部变量在函数调用时自动产生, 但不会自动初始化, 随函数调用的结束, 这个变量也就自动消失了, 下次调用此函数时再自动产生, 还要再赋值, 退出时又自动消失。

二、static

static称为静态变量。根据变量的类型可以分为静态局部变量和静态全程变量。

1. 静态局部变量

它与局部变量的区别在于: 在函数退出时, 这个变量始终存在, 但不能被其它、函数使用, 当再次进入该函数时, 将保存上次的结果。其它与局部变量一样。

2. 静态全程变量

Turbo C2.0允许将大型程序分成若干独立模块文件分别编译, 然后将所有模块的目标文件连接在一起, 从而提高编译速度, 同时也便于软件的管理和维护。静态全程变量就是指只在定义它的源文件中可见而在其它源文件中不可见的变量。它与全程变量的区别是: 全程变量可以再说明为外部变量(extern), 被其它源文件使用,而静态全程变量却不能再被说明为外部的, 即只能被所在的源文件使用。

三、extern

extern称为外部变量。为了使变量除了在定义它的源文件中可以使用外, 还要被其它文件使用。因此, 必须将全程变量通知每一个程序模块文件, 此时可用extern来说明。

四、register

register称为寄存器变量。它只能用于整型和字符型变量。定义符register说明的变量被Turbo C2.0存储在CPU的寄存器中, 而不是象普通的变量那样存储在内存中, 这样可以提高运算速度。但是Turbo C2.0只允许同时定义两个寄存器变量,一旦超过两个, 编译程序会自动地将超过限制数目的寄存器变量当作非寄存器变量来处理。因此, 寄存器变量常用在同一变量名频繁出现的地方。另外, 寄存器变量只适用于局部变量和函数的形式参数, 它属于auto型变量,因此, 不能用作全程变量。定义一个整型寄存器变量可写成: register int a;