⑴ 使用c语言实现动态数组
你的太乱了的吧磨昌
二维数瞎颤扒组,其实实质是一位数组横排
为啥用两个for循环,我看了会头晕,洞行你的太乱了
#include<stdio.h>
#include<malloc.h>
int main()
{
int *p;
int m,n;
scanf("%d%d",&m,&n);
p = (int*)malloc(sizeof(int)*m*n);
for(int i=0;i<(m*n);i++)
{
scanf("%d",p+i);
}
for( i=0;i<(m*n);i++)
{
print(“%d ”,p+i)
if((i+1)%4==0)
printf("\n");
}
希望对你有帮助
⑵ C语言如何定义动态数组
intmain(void)
{
int*number,n,m,i;
printf("thetotalnumbersis:");
scanf("%d",&n);
printf("backm:");
scanf("%d",&m);
number=(int*)malloc(n*sizeof(int));
printf("input%dintegers:",n);
for(i=0;i<n;i++)
{
scanf("%d",&number[i]);
}
(2)c语言动态数据列表扩展阅读
动态数组,是相对于静态数组而言。静态数组的长度是预先定义好的,在整个程序中,一旦给定大小后就无法改变。而动态数组则不然,它可以随程序需要而重新指定大小。
动态数组的内存空间是从堆(heap)上分配(即动态分配)的。是通过执行代码而为其分配存储空间。当程序执行到这些语句时,才为其分配。程序员自己负责释放内存。使用动态数组的优点是可以根据用户需要,有效利用存储空间。
⑶ 数据结构顺序表动态c语言
int Insert(Sqlist &L,int x,int i) {//其他函数没有问题,下面是修改后的插入函数
int j;
if(i < 0 || i > L.length - 1) return 0;
for(j = L.length; j > i; --j)
L.elem[j] = L.elem[j - 1];
L.elem[i] = x;
++L.length;
return 1;
}
⑷ C语言动态列表排序
链表吗?以前练习的时候做过一个,你参考下
#include<stdio.h>
#include<stdlib.h>
#include<iostream.h>
#define OK 1;
#define ERROR 0;
typedef int ElemType;
typedef int Status;
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
void CreateList(LinkList &L,int n) //创建表
{
int i;
LNode *p;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
for(i=n;i>0;i--)
{
p=(LinkList)malloc(sizeof(LNode));
printf("输入第%d个元素的值 ",i);
scanf("%d",&p->data);
p->next=L->next;
L->next=p;
}
printf("创建成功! ");
}
Status GetElem(LinkList &L,int i) //得到第i个元素
{
ElemType j=1,e;
LNode *p;
p=L->next;
while(j<i&&p)
{
p=p->next;
j++;
}
if(!p||j>i)
{
printf("第%d个元素不存在! ",i);
return ERROR;
}
e=p->data;
printf("第%d个元素是%d ",i,e);
return OK;
}
Status ListInsert(LinkList &L,int i,ElemType e) //插入元素
{
ElemType j;
LNode *p,*s;
p=L;
j=1;
while(p&&j<i)
{
p=p->next;
++j;
}
if(!p||j>i)
{
printf("不能在第%d中插入 ",i);
}
s=(LinkList)malloc(sizeof(LNode));
s->data=e;
s->next=p->next;
p->next=s;
return OK;
}
Status ListDelete(LinkList &L,int i) //删除元素
{
LNode *p,*q;
p=L;
int j=0;
while(p->next&&j<i-1)
{
p=p->next;
j++;
}
if(!(p->next)||j>i-1)
{
printf("查找失败! ");
return ERROR;
}
q=p->next;
p->next=q->next;
free(q);
printf("删除成功! ");
return OK;
}
void MergeList(LinkList &La,LinkList &Lb,LinkList &Lc) //归并
{
LNode *pa,*pb,*pc;
Lc=pc=La;
pa=La->next;
pb=Lb->next;
while(pa&&pb)
{
if(pa->data<=pb->data)
{
pc->next=pa;
pc=pa;
pa=pa->next;
}
else
{
pc->next=pb;
pc=pb;
pb=pb->next;
}
}
pc->next=pa?pa:pb;
printf("归并成功! ");
}
void PList(LinkList &L) //打印
{
LNode *p;
p=L->next;
while(p)
{
printf("%d ",p->data);
p=p->next;
}
printf(" ");
}
Status CList(LinkList &L) //排序
{
LNode *p;
int flag,e;
p=L;
while(1)
{
flag=0;
for(p=L;p->next->next!=NULL;p=p->next)
{
if(p->next->data>p->next->next->data)
{
e=p->next->data;
p->next->data=p->next->next->data;
p->next->next->data=e;
flag=1;
}
}
if(flag==0)
{
printf("排序成功! ");
return OK;
}
}
}
int main()
{
int count=1,m,n,k,sum,i,j,g;
LinkList list[10];
printf("输入创建表的个数 ");
scanf("%d",&m);
for(;count<=m;count++)
{
printf("输入第%d个表的元素个数 ",count);
scanf("%d",&n);
printf("逆序输入n个元素 ");
CreateList(list[count],n);
printf("第%d个表创建成功 ",count);
}
sum=m+1;
while(1)
{
printf("功能: 1.查找某位置元素的值 2.插入元素 3.删除元素 4.元素排序 5.两表合并 6.显示表内元素 7.退出 ");
scanf("%d",&k);
switch(k)
{
case 1:
printf("输入查找的表 ");
scanf("%d",&i);
if(i>m)
{
printf("不存在表%d ",i);
break;
}
printf("输入查找位置 ");
scanf("%d",&j);
GetElem(list[i],j);
break;
case 2:
printf("输入要插入的表 ");
scanf("%d",&i);
if(i>m)
{
printf("不存在表%d ",i);
break;
}
printf("输入要插入的位置 ");
scanf("%d",&j);
printf("输入要插入的值 ");
scanf("%d",&g);
ListInsert(list[i],j,g);
break;
case 3:
printf("输入要删除的表 ");
scanf("%d",&i);
if(i>m)
{
printf("不存在表%d ",i);
break;
}
printf("输入要删除的位置 ");
scanf("%d",&j);
ListDelete(list[i],j);
break;
case 4:
printf("输入要排序的表 ");
scanf("%d",&i);
if(i>m)
{
printf("不存在表%d ",i);
break;
}
CList(list[i]);
break;
case 5:
printf("输入表1 ");
scanf("%d",&i);
if(i>m)
{
printf("不存在表%d ",i);
break;
}
printf("输入表2 ");
scanf("%d",&j);
if(i>m)
{
printf("不存在表%d ",j);
break;
}
MergeList(list[i],list[j],list[sum]);
printf("已经将合并的标放入第%d个表中",sum);
sum++;
m++;
break;
case 6:
printf("输入要显示的表 ");
scanf("%d",&i);
if(i>m)
{
printf("不存在表%d ",i);
break;
}
PList(list[i]);
break;
case 7:
return 0;
default:
printf("错误的指令!/n");
break;
}
}
}