您的位置:

c语言相关列表信息,c语言列表函数

本文目录一览:

c语言表示列表的问题

/*

抱歉,又是我

*/

//#define debug

struct dimension

{

int num_row ;

int num_col ;

} ;

void table_set_entry (const int t[] ,const struct dimension *dim ,const int row ,const int col ,const int v)

{

if (t == 0 || dim == 0 || row 0 || col 0 || row = dim-num_row || col = dim-num_col)

return ;

t[col * dim-num_row + row] = v ;

return ;

}

int table_get_entry (const int t[] ,const struct dimension *dim ,const int row ,const int col)

{

if (t == 0 || dim == 0 || row 0 || col 0 || row = dim-num_row || col = dim-num_col)

return 0 ;

return t[col * dim-num_row + row] ;

}

void table_clear (const int t[] ,struct dimension *dim)

{

if (t == 0 || dim == 0)

return ;

const int* pb = t ;

const int* pe = t + dim-num_row * dim-num_col ;

int* p ;

for (p = pb ; p pe ; p++)

*p = 0 ;

return ;

}

void table_copy (const int a[] ,const int b[] ,struct dimension *dim)

{

if (a == 0 || b == 0 || dim == 0)

return ;

const int* pab = a ;

const int* pae = a + dim-num_row * dim-num_col ;

int* pa ;

const int* pbb = b ;

int* pb ;

for (pa = pab ,pb = pbb ; pa pae ; pa++ ,pb++)

*pb = *pa ;

return ;

}

#ifdef debug

int main ()

{

void table_set_entry (const int t[] ,const struct dimension *dim ,const int row ,const int col ,const int v) ;

int table_get_entry (const int t[] ,const struct dimension *dim ,const int row ,const int col) ;

void table_clear (const int t[] ,struct dimension *dim) ;

void table_copy (const int a[] ,const int b[] ,struct dimension *dim) ;

int t[10][10] ;

int f[100] ;

const struct dimension dim = {10 ,10} ;

const int row = 4 ;

const int col = 7 ;

const int v = 250 ;

table_set_entry (t ,dim ,row ,col ,v) ;

printf ("isn't %d equal to %d ?\n" ,t[col][row] ,table_get_entry (t ,dim ,row ,col)) ;

table_copy (t ,f ,dim) ;

table_clear (t ,dim) ;

printf ("t : %d while f : %d\n" ,t[col][row] ,f[col * dim.num_row + row]) ;

return 0 ;

}

#endif

一个有关用C语言生成数字列表的问题

如果生成的列表是用来打印的:

int i,n; char fmt[80]; scanf("%d,%d",n,k);

sprintf(fmt,"%%0%dd,",n); for ( i=0;ik;i++ ) printf(fmt,i+1);

如果生成的列表需要保存:

int i,n,k; char fmt[80],mlist[1024][10];

scanf("%d,%d",n,k); if ( k1024 ) k=1024; if ( n9 ) n=9;

sprintf(fmt,"%%0%dd,",n); for ( i=0;ik;i++ ) sprintf(mlist[i],fmt,i+1);

C语言动态列表排序

链表吗?以前练习的时候做过一个,你参考下

#includestdio.h

#includestdlib.h

#includeiostream.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;i0;i--)

{

p=(LinkList)malloc(sizeof(LNode));

printf("输入第%d个元素的值\n",i);

scanf("%d",p-data);

p-next=L-next;

L-next=p;

}

printf("创建成功!\n");

}

Status GetElem(LinkList L,int i) //得到第i个元素

{

ElemType j=1,e;

LNode *p;

p=L-next;

while(jip)

{

p=p-next;

j++;

}

if(!p||ji)

{

printf("第%d个元素不存在!\n",i);

return ERROR;

}

e=p-data;

printf("第%d个元素是%d\n",i,e);

return OK;

}

Status ListInsert(LinkList L,int i,ElemType e) //插入元素

{

ElemType j;

LNode *p,*s;

p=L;

j=1;

while(pji)

{

p=p-next;

++j;

}

if(!p||ji)

{

printf("不能在第%d中插入\n",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-nextji-1)

{

p=p-next;

j++;

}

if(!(p-next)||ji-1)

{

printf("查找失败!\n");

return ERROR;

}

q=p-next;

p-next=q-next;

free(q);

printf("删除成功!\n");

return OK;

}

void MergeList(LinkList La,LinkList Lb,LinkList Lc) //归并

{

LNode *pa,*pb,*pc;

Lc=pc=La;

pa=La-next;

pb=Lb-next;

while(papb)

{

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("归并成功!\n");

}

void PList(LinkList L) //打印

{

LNode *p;

p=L-next;

while(p)

{

printf("%d ",p-data);

p=p-next;

}

printf("\n");

}

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-datap-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("排序成功!\n");

return OK;

}

}

}

int main()

{

int count=1,m,n,k,sum,i,j,g;

LinkList list[10];

printf("输入创建表的个数\n");

scanf("%d",m);

for(;count=m;count++)

{

printf("输入第%d个表的元素个数\n",count);

scanf("%d",n);

printf("逆序输入n个元素\n");

CreateList(list[count],n);

printf("第%d个表创建成功\n",count);

}

sum=m+1;

while(1)

{

printf("功能:\n1.查找某位置元素的值\n2.插入元素\n3.删除元素\n4.元素排序\n5.两表合并\n6.显示表内元素\n7.退出\n");

scanf("%d",k);

switch(k)

{

case 1:

printf("输入查找的表\n");

scanf("%d",i);

if(im)

{

printf("不存在表%d\n",i);

break;

}

printf("输入查找位置\n");

scanf("%d",j);

GetElem(list[i],j);

break;

case 2:

printf("输入要插入的表\n");

scanf("%d",i);

if(im)

{

printf("不存在表%d\n",i);

break;

}

printf("输入要插入的位置\n");

scanf("%d",j);

printf("输入要插入的值\n");

scanf("%d",g);

ListInsert(list[i],j,g);

break;

case 3:

printf("输入要删除的表\n");

scanf("%d",i);

if(im)

{

printf("不存在表%d\n",i);

break;

}

printf("输入要删除的位置\n");

scanf("%d",j);

ListDelete(list[i],j);

break;

case 4:

printf("输入要排序的表\n");

scanf("%d",i);

if(im)

{

printf("不存在表%d\n",i);

break;

}

CList(list[i]);

break;

case 5:

printf("输入表1\n");

scanf("%d",i);

if(im)

{

printf("不存在表%d\n",i);

break;

}

printf("输入表2\n");

scanf("%d",j);

if(im)

{

printf("不存在表%d\n",j);

break;

}

MergeList(list[i],list[j],list[sum]);

printf("已经将合并的标放入第%d个表中",sum);

sum++;

m++;

break;

case 6:

printf("输入要显示的表\n");

scanf("%d",i);

if(im)

{

printf("不存在表%d\n",i);

break;

}

PList(list[i]);

break;

case 7:

return 0;

default:

printf("错误的指令!/n");

break;

}

}

}

C语言如何建立一个列表,编程怎么编,举例说一下,谢谢啦

首先定义一个链表。

struct node

{

int id;

struct node * next;

};

接下来写一些操作的函数(插入,删除等等)。

插入函数:

struct node* insert(struct node* pNode, int iTemp)

{

//判断 pNode 是否为空。

if(pNode==NULL)

{

//这个节点是空,返回错误。

return NULL;

}

// 创建一个新的节点。

struct node* tempNode = (struct node*)malloc(sizeof(struct node));

tempNode-id= iTemp;

if(pNode-next == NULL)

{

pNode-next = tempNode;

tempNode-next = NULL;

}else

{

struct node * pNext = pNode-next;

pNode-next = tempNode;

tempNode-next = pNext;

}

return tempNode;

}

int main()

{

struct node* head = (struct node*)malloc(sizeof(struct node));

head-id = 0;

head-next = NULL;

struct node * ptemp;

ptemp = head;

for( int i=1; i10; i++)

{

struct node* temp = insert(ptemp,i);

ptemp = temp;

}

return 0;

}

C语言宏定义——预处理指令列表

#:空指令,无任何效果 #include:包含一个源代码文件 #define:定义宏 #undef:取消已定义的宏 #if:如果给定条件为真,则编译下面代码 #ifdef:如果宏已经定义,则编译下面代码 #ifndef:如果宏没有定义,则编译下面代码 #elif:如果前面的#if给定条件不为真,当前条件为真,则编译下面代码 #endif:结束一个#if……#else条件编译块 #error:停止编译并显示错误信息 预处理指令是以#号开头的代码行。#号必须是该行除了任何空白字符外的第一个字符。#后是指令关键字,在关键字和#号之间允许存在任意个数的空白字符。整行语句构成了一条预处理指令,该指令将在编译器进行编译之前对源代码做某些转换

C语言printf下各种%号列表

%d 按整型数据的实际长度输出

%md m是指输出字段的宽度。如果数据的位数小于m,则在左端补空格;若大于m,则按数据的实际位数输出。

%ld 输出长整型数据

%o 以八进制输出整型数

%x 以十六进制输出整型数

%u 以十进制输出unsigned型数据

%c 输出字符

%s 输出字符串

%ms 输出字符占m列,如果串长度小于m则左边补空格,若大于m则按原长度输出

%-ms 如果串长度小于m,则字符串相左靠,右边补空格

%m.ns 输出占m列,但只取字符串的左端n个字符。这n个字符在m的右侧,左边补空格

%-m.ns 其中m,n含义同上,n个字符输出在m列的左侧,右端补空格。如果nm,则m自动取n值,即保证n个字符正常输出

%f 不指定字符宽度,由系统自动指定,使整数部分全部输出,并输出6位小数。应当注意输出的数字并非全部都是有效数字。单精度数的有效位数一般是7位,而双精度数的有效位数一般是16位。

%m.nf 指定输出的数列占m列,其中有n位小数。若数值长度小于m,左端补空格。

%-m.nf与%m.nf 的区别仅在于使输出的数值向左端靠,右端补空格。

%e 不指定输出数据所占的宽度和数字部分的小数位数

%m.ne和%-m.ne含义与前面相同

%g 假设一个数要用%f和%e输出,用%g格式时自动从这两种格式中选出最短者