本文目录一览:
- 1、C语言中creatlist的用法
- 2、c语言 creatlist 自定义函数求理解
- 3、C语言链表的使用方法
- 4、C语言编写顺序表。为什么我的修改操作总是修改不了第一位,其他的均可正常运行,程序如下,帮帮忙哈
- 5、C语言编写学生信息录入 信息包括学号 姓名 性别 年龄 成绩 能实现学生信息的插入 删除 修改 查询 储存等操
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);
}