1>
要求:
答:
1.栈区内存空间比较小,堆区内存空间较大.
2.栈区内存为系统分配释放,而堆区内存为程序员自己分配申请
3.栈区内存是静态申请和释放,堆区内存是动态申请和释放
4.栈区申请变量先进后出,堆区申请变量遵循先进先出
5.栈区申请内存较为连续,堆区则较为分散
2>
要求:
源代码:
:
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 8
int delete(int arr[],int len, int x)
{
int j=0;
for(int i=0;i<len;i++)
{
if(arr[i]!=x)
arr[j++]=arr[i];
}
return j;
}
int main()
{
int arr[MAXSIZE];
int x,len;
len = MAXSIZE;
for(int i=0;i<len;i++)
{
printf("please enter arr[%d]:",i);
scanf(" %d",&arr[i]);
}
puts("");
printf("please enter x : ");
scanf("%d",&x);
printf("len =%d\n",len);
len=delete(arr,len,x);
printf("New len =%d\n",len);
printf("New arr[] is :\n");
for(int i=0;i<len;i++)
{
printf(" %d",arr[i]);
}
puts("");
return 0;
}
效果图:
3>
要求:
源代码:
#include <stdio.h>
#include <stdlib.h>
typedef int datatype;
typedef struct Node
{
datatype data;
struct Node *next;
}*LinkList;
LinkList create()
{
LinkList s=(LinkList)malloc(sizeof(struct Node));
if(s==NULL) return NULL;
s->data=0;
s->next=NULL;
return s;
}
LinkList head_insert(LinkList head,int element)
{
LinkList s=create();
s->data=element;
if(head==NULL)
{
head=s;
}
else
{
s->next=head;
head=s;
}
return head;
}
LinkList rear_insert(LinkList head,int element)
{
LinkList s=create();
s->data=element;
if(head==NULL)
{
head=s;
}
else
{
LinkList p=head;
while(p->next!=NULL)
{
p=p->next;
}
p->next=s;
}
return head;
}
LinkList head_delete(LinkList head)
{
if(head==NULL) return NULL;
LinkList del=head;
head=head->next;
free(del);
del=NULL;
return head;
}
LinkList rear_delete(LinkList head)
{
if(head==NULL) return NULL;
LinkList del=head;
while(del->next->next!=NULL)
{
del=del->next;
}
free(del->next);
del->next=NULL;
return head;
}
void output(LinkList head)
{
if(head==NULL) printf("empty!\n");
else
{
while(head!=NULL)
{
printf("%d ",head->data);
head=head->next;
}
}
}
int main(void)
{
int n,element;
LinkList head=NULL;
printf("please enter n: ");
scanf("%d",&n);
for(int i=0;i<n;i++)
{
printf("please enter %d element: ",i+1);
scanf(" %d",&element);
//head=head_insert(head,element);
head=rear_insert(head,element);
}
output(head);
puts("");
printf("After head delete : \n");
head=head_delete(head);
printf("After rear delete : \n");
head=rear_delete(head);
output(head);
puts("");
return 0;
}