列表C语言,c++语言表

http://www.itjxue.com  2023-01-14 17:36  来源:未知  点击次数: 

C语言动态创建列表问题

main函数作如下修改,就能正常运行。输入数据的时候,以-1作为结束标志。

int?main(void){

struct?point?*a,*p;

struct?point?*head=NULL;

int?b[100],j,i=0,x;???/*修改过的地方,新定义了变量x*/

scanf("%d",x);???/*修改过的地方*/

while(x!=-1){

b[i]=x;

scanf("%d",x);???/*修改过的地方*/

i++;}

a=(struct?point?*)malloc(sizeof(struct?point));/*修改过的地方*/

for(j=0;ji/2;j++){

a-x=b[(2*j)];

a-y=b[(2*j)+1];

a-next=NULL;

if(head==NULL)

head=a;

else{

p-next=a;

p=a;}

print(head);

}

}

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语言中顺序列表的插入删除程序

#include stdio.h

#include stdlib.h

#include string.h

#define MaxSize 50

#define len(x) sizeof(x)/sizeof(x[0])

typedef struct SqList

{

int data[MaxSize];

int length;

}SqList;

static SqList Create(int a[],int n);//用一个数组创建静态顺序表

static void Print(SqList L);//打印一个静态顺序表

static void ListInsert(SqList *p,int i,int e);//L的第i个位置插入e

static void ListDelete(SqList *p,int i);//删除列表第i个数据

static int LocateElem(SqList L,int e);//查找第一个值等于e的元素,返回其位序

static void Reverse(SqList *p,int left,int right);//逆置表的第left到right的元素顺序

/*递增序列折半查找等于e的元素,返回其位序*/

static int Binsearch(SqList L,int e);

int main()

{

int a[]={1,2,3,4};

SqList L=Create(a,len(a));

ListInsert(L,2,100);

ListDelete(L,2);

Reverse(L,1,4);

Print(L);

printf("%d\n",Binsearch(L,2));

}

static SqList Create(int a[],int n)

{

SqList L;

int i;

L.length=n;

for(i=0;iL.length;i++)

L.data[i]=a[i];

return L;

}

static void Print(SqList L)

{

int i;

for(i=0;iL.length;i++)

printf("%d ",L.data[i]);

printf("\n");

}

static void ListInsert(SqList *p,int i,int e)

{

int j;

if(i1 || ip-length+1)

{printf("错误范围\n");}

if(p-length=MaxSize)

{printf("存储空间已满\n");}

for(j=p-length;j=i;j--)

p-data[j]=p-data[j-1];

p-data[i-1]=e;

p-length++;

}

static void ListDelete(SqList *p,int i)

{

if(i1 || ip-length)

{printf("删除范围出错\n");return;}

while(ip-length)

{

p-data[i-1]=p-data[i];i++;

}

p-length--;

}

static int LocateElem(SqList L,int e)

{

int i;

for(i=0;iL.length;i++)

if(L.data[i]==e)

return i+1;

return 0;

}

static void Reverse(SqList *p,int left,int right)

{

int temp;

if(leftright || left1 || rightp-length)

{printf("错误的输入\n");return;}

for(left--,right--;leftright;left++,right--)

{

temp=p-data[left];

p-data[left]=p-data[right];

p-data[right]=temp;

}

}

static int Binsearch(SqList L,int e)

{

int mid,low=0,high=L.length-1;

while((low+1)!=high)

{

mid=(low+high)/2;

if(L.data[mid]==e) return mid+1;

if(eL.data[mid]) high=mid;

if(eL.data[mid]) low=mid;

}

return 0;

}

ListInsert 和 ListDelete 为你所要的函数

C语言如何返回选择列表

1、如果只是想返回已经写好的主菜单页面的话

可以直接在当前函数中结束位置调用主菜单所在的函数,如果想输入某值返回的话

就加个输入提示

比如

在其他函数页面加上“输入0返回主菜单”就可以在任意时候

输入0来返回

当然实现的时候也是输入语句加判断语句

加调用主菜单所在函数,调用前先调用清屏函数。

2、例程:

#include

int menu()

{ int rt;

char str[256];

printf("1 ****\n");

printf("2 ****\n");

printf("3 ****\n");

printf("4 ****\n");

printf("5 退出程序\n");

printf("请选择,输入选项前面的数字后回车: "); scanf("%s",str);

if ( str[0]='1' str[0]='5' ) rt=str[0]-'0'; else rt=0;

return rt;

}

void f1() {}

void f2() {}

void f3() {}

void f4() {}

void main()

{ int s,loop=1;

while ( loop )

{ s=menu();

switch ( s )

{ case 1: f1(); break;

case 2: f2(); break;

case 3: f3(); break;

case 4: f4(); break;

case 5: loop=0; break;

default: break;

}

}

}

c语言如何定义一个单项列表

#includeiostream

using?namespace?std;

struct?A

{

int?x;

A?*next;

};

A?*Head;//头指针

int?k=0;//记录创建链表个数

A?*J_L();//创建链表

void?B_J(A?*head,int?x);//比较大小

void?show(A?*head);//输出

void?main()

{

A?*t;

t=J_L();

B_J(t,k);

show(t);

}

void?B_J(A?*head,int?x)

{

A?*m,*n;

int?swap;

for(int?i=0;i(x-1);i++)

{

n=head;

m=n-next;

for(int?j=0;j(x-i-1);j++)

{

if((n-x)(m-x))

{swap=n-x;n-x=m-x;m-x=swap;}

n=n-next;

m=n-next;

}

}

}

void?show(A?*head)

{

A?*t=head;

while(t!=NULL)

{

coutt-xendl;

t=t-next?;

}

}

A?*J_L()

{

cout"请输入,0退出";

A?*?p=new?A;

k++;

A?*?d=Head=p;

cinp-x;

if(p-x==0)

{

k--;

delete?p;Head=0;p=0;

}

while(1)

{

cout"请输入,0退出";

p=new?A;

k++;

d-next=p;

cinp-x;

if(p-x==0)

{k--;delete?p;d-next=0;p=0;break;}

d=p;

}

return?Head;

}

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

(责任编辑:IT教学网)

更多

推荐Oracle文章