您的位置:

c语言changelist,C语言常见编程题及答案40题

本文目录一览:

C语言中creatlist的用法

1、createlist不是库函数,一般是数据结构中实现新建一个链表的自定义函数。因此没有什么用法好说的,关键是看自己怎么定义。

2、例程:

NODE *creatlist(int a[])

{ NODE *h,*p,*q;int i;

h=(NODE *)malloc(sizeof(NODE));

h-next=NULL;

for(i=0;iN;i++)

{q=(NODE *)malloc(sizeof(NODE));

 q-data=a[i];

 q-next=NULL;

if(h-next==NULL) h-next=p=q;

else {p-next=q;p=q;}     }

return h;

 }

c语言 creatlist 自定义函数求理解

struct list *createlist(int data[], int n)

{

//输入一个数组,n是数组的大小,返回一个内容相同的链表

struct list *head = 0, *p, *q;//head:链表头

int i;

head = (struct list *) malloc(sizeof(struct list));//建立链表头,分配空间

head-data = data[0];//往链表头填入数据data[0]

p = q = head;//这些是循环变量,p先走,q跟着,俩人从链表头一直走到链表尾

//每次循环,p和q一开始指向链表末尾的节点上。 p先走,malloc函数改变了他的值,他指向了一块新的内存空间,就是新的节点;然后q-next=p把新连起来;然后 q跟上p的步伐,q=p,相当于二者又站在了末尾的节点上。

for(i=1; in; i++)

{

p = (struct list *) malloc(sizeof(struct list));//p变成一个新的节点,给p分配空间(注意p的值被改写了,它不再是head,而是一个新的值,就是下一个节点)

p-data = data[i];//p装入数据,第一次循环它装入的是data[1],也就是紧跟着head的那个

q-next = p;//第一次循环q是head,以后每次都是q落后p一个格子。

//第一次循环相当于head-next=p,把第1个节点放在第0个节点后面。

q = p;

//第一次循环q=p,q追上p的脚步,离开head(第0

//第二次循环q=p,p又变成新的节点,相当于把第2个节点(p)放在第一个节点后面

}

p-next = NULL;//封锁野指针

return head;

}

不懂欢迎追问

C语言链表的使用方法

下面的程序是单链表的建立与输出,都有详细的注释,相信你能看的懂

但要想学习链表必须得掌握了一定的C语言基础

下面这个链表的作用是建立5个结点的单链表,5个结点的值输入以后,依次输出各个结点的值

#includestdio.h

#includestdlib.h

//链表的建立与输出

struct node//定义结点的类型

{

int num,score;

node*link;

};

void main()

{

node*creat(int n);//函数原型声明

void print(node*h);//函数原型声明

node*head=0;//定义链头指针并初始化

head=creat(5);//调用creat函数创建链表

print(head);//调用print函数输出链表

}

node*creat(int n)

{

node*h=0,*p,*q;

int i;

for(i=1;i=n;i++)

{

q=(node*)malloc(sizeof(node));//分配一个结点空间

scanf("%d%d",q-num,q-score);//输入新结点的值

q-link=0;//新结点的指针域置0

if(h==0)

h=q;//第一个结点作为链头结点

else

p-link=q;//新结点添加到链表的末尾

p=q;

}

return h;//返回链头指针

}

void print(node*h)//链表输出函数的定义

{

while(h)//当指针h非空时输出h所指结点的值

{

printf("num=%d\tscore=%d\n",h-num,h-score);

h=h-link;//使h指向下一个结点

}

}

C语言编写顺序表。为什么我的修改操作总是修改不了第一位,其他的均可正常运行,程序如下,帮帮忙哈

#include stdio.h

#define MaxSize 100

typedef struct MySequence{

char data[MaxSize];

int length;

} MySeq;

void menu()

{

printf("本代码实现顺序表的如下几个基本功能,请选择对应的功能选项进行相应操作:\n");

printf("1.创建顺序表\n");

printf("2.查找字符\n");

printf("3.删除字符\n");

printf("4.插入字符\n");

printf("5.修改字符\n");

printf("6.显示所有字符\n");

printf("0.退出程序\n");

}

void SeqInit(MySeq* mys)

{

mys-length = 0;

}

int CreateSeq(MySeq* mys)

{

char c;

printf("请依次输入顺序表的字符序列,结束请输入'#'\n");

while(1)

{

// fflush(stdin); //将这部分去掉,

scanf("%c",c);

if(c=='#')

{

printf("输入结束!\n");

return 0;

}

else if(mys-length==100)

{

printf("顺序表存储空间已满,不能继续输入。\n");

return 1;

}

else

{

mys-data[mys-length]=c;

mys-length++;

}

}

return 2;

}

int CHangeList(MySeq* mys)

{

int i,j;

char x;

printf("请输入修改后的字符:\n");

fflush(stdin);

scanf("%c",x);

printf("请输入要修改的位置:\n");

fflush(stdin);

scanf("%d",i);

if (i0||imys-length) return 0;

else

{

for(j=0;jmys-length;j++)

if(j==i) // 这部分应该改成if(j==i)

{

mys-data[j]=x;

return j;

}

//else return 0; //这部分是最重要的错误,删除。

}

}

int ShowAll(MySeq* mys)

{

int cur=0;

printf("顺序表中的数据依次为:");

for(cur=0;curmys-length;cur++)

{

printf("%c",mys-data[cur]);

}

printf("\n");

return 0;

}

void main()

{

MySeq mys;

int choice = 0;

SeqInit(mys);//对顺序表进行初始化//

menu();

printf("本代码实现顺序表的几个基本功能,请选择对应的功能选项进行相应操作:");

fflush(stdin);

scanf("%d",choice);

while(1)

{

switch(choice)

{

case 1:

{ if(mys.length!=0)

{

char c;

printf("顺序表已经初始化,再次初始化将清除原有数据。是否继续 (y/n):");

fflush(stdin);

scanf("%c",c);

while(1)

{

if(c=='y')

{

mys.length = 0;

fflush(stdin); //每次初始化时,清除缓中取数据。是在函数CreaeSeq()外部、

CreateSeq(mys);

break;

}

else if(c=='n')

{

break;

}

else

{

printf("是否继续 (y/n):");

fflush(stdin);

scanf("%c",c);

}

}

break;

}

else

{

fflush(stdin); // 这儿也是如此

CreateSeq(mys);

break;

}}

case 5:

CHangeList(mys);

break;

case 6:

ShowAll(mys);

break;

case 0:

break;

default:

break;

}

menu();

printf("本代码实现顺序表的几个基本功能,请选择对应的功能选项进行相应操作:");

fflush(stdin);

scanf("%d",choice);

}

}

C语言编写学生信息录入 信息包括学号 姓名 性别 年龄 成绩 能实现学生信息的插入 删除 修改 查询 储存等操

# include "iostream"

# include "String.h"

using namespace std;

struct List

{

char name[20];

int NO;

};

template class List

struct Node

{

List data;

NodeList *next;

};

template class List

class Student

{

NodeList *head;

public:

Student(int m);

void Setdata(int n);

void PrintStudent();

int Get(char b[]);

void Delete(int i);

void Insert(int i,List item);

void Change(char a[],int num);

~Student();

};

template class List

StudentList::Student(int m)

{

NodeList *r,*s;

head = new NodeList;

r = head;

for (int i = 0;i m;i++)

{

s = new NodeList;

r-next = s;

r = s;

}

r-next = NULL;

}

template class List

void StudentList::Setdata(int n)

{

NodeList *p;

p = head-next;

for(int i = 0;i n;i++)

{

cout"请输入姓名:";

cinp-data.name;

cout"请输入身份证号码:";

cinp-data.NO;

p = p-next;

}

}

template class List

void StudentList::PrintStudent()

{

NodeList *p;

p = head-next;

while (p)

{

coutp-data.name","p-data.NOendl;

p = p-next;

}

}

template class List

int StudentList::Get(char b[])

{

NodeList *p;

p = head-next;

while(p strcmp(p-data.name,b) != 0)

{

p = p-next;

}

return p-data.NO;

}

template class List

void StudentList::Delete(int i)

{

NodeList *p,*q;

p = head;

int j = 0;

while(p j i-1)

{

p = p-next;

j++;

}

if(!p || !p-next) {cerr"删除位置非法";exit(1);}

else

{

List x;

q = p-next;

x = q-data;

p-next = q-next;

delete q;

coutx.name","x.NOendl;

}

}

template class List

void StudentList::Insert(int i,List item)

{

NodeList *p,*s;

p = head;

int j = 0;

while (p j i-1)

{

p = p-next;

j++;

}

if(!p) {cerr"插入位置非法";exit(1);}

else

{

s = new NodeList;

strcpy(s-data.name,item.name);

s-data.NO = item.NO;

s-next = p-next;

p-next = s;

}

}

template class List

void StudentList::Change(char a[],int num)

{

NodeList *p;

p = head-next;

while (p strcmp(p-data.name,a) != 0)

{

p = p-next;

}

p-data.NO = num;

}

template class List

StudentList::~Student()

{

NodeList *p,*q;

p = head;

while (p)

{

q = p;

p = p-next;

delete q;

}

head = NULL;

}

void main()

{

cout"请建立学籍系统"endl;

int m;

cout"请输入总人数:";

cinm;

StudentList stu(m);

int n = m;

stu.Setdata(n);

stu.PrintStudent();

int choice;

do

{

cout"********"endl;

cout"1.查询"endl;

cout"2.删除"endl;

cout"3.插入"endl;

cout"4.修改"endl;

cout"0.退出"endl;

cout"********"endl;

cout"请输入您的选择:";

cinchoice;

switch(choice)

{

case 1:

{

char b[20];

cout"请输入需查询的姓名:";

cinb;

cout"查询人的学号为:";

coutstu.Get(b)endl;

}break;

case 2:

{

int i;

cout"请输入需删除数据的位置:";

cini;

cout"删除的数据为:";

stu.Delete(i);

}break;

case 3:

{

List item;

cout"请输入需插入学生的姓名:";

cinitem.name;

cout"请输入需插入学生的学号:";

cinitem.NO;

int i;

cout"请输入需插入的位置:";

cini;

stu.Insert(i,item);

stu.PrintStudent();

}break;

case 4:

{

char a[20];

cout"请输入需修改人的姓名:";

cina;

int num;

cout"请输入修改的新学号:";

cinnum;

stu.Change(a,num);

stu.PrintStudent();

}break;

case 0:

{

exit(1);

}break;

default:

{

cout"选择项非法,请重新选择";

coutendl;

coutendl;

}

}

} while(choice);

}