c语言建立单链表的完整代码(单链表的实现 c语言)

http://www.itjxue.com  2023-01-26 22:26  来源:未知  点击次数: 

数据结构C语言单链表的创建,插入删除和合并程序代码

你看这个应该满足要求吧。我把三种循环方式都用上了:

#includestdio.h

#includemath.h

int isprime(int n)

{

int i,t;

if(n==2)

return 1;

if(n%2==0 || n2)

return 0;

for(i=3,t=(int)sqrt(n);i=t;i+=2)

{

if(n%i==0)

return 0;

}

return 1;

}

void main()

{

int i,a,n;

i=0;

do

{

printf("Input an integer (=1):");

scanf("%d",a);

if(a=1)

break;

}while(++i3);

if(i==3) exit(0);

printf("prime submultiples:\n");

i=1;

n=0;

while(i=a)

{

if(a%i==0)

if(isprime(i))

{

printf("%d ",i);

n++;

if(n%10==0)

printf("\n");

}

i++;

}

帮我编写一个用C语言编写的单链表的建立,和输入输出操作,谢谢各位

linklist

*creatlistr(){

//用尾结点插入法建立一个单链表

linklist

*l,*p,*rear;

//定义linklist型指针变量分别用于存放头结点、待插入的结点、尾结点

int

x;

l=(linklist*)malloc(sizeof(linklist));//为待建立的链表申请地址空间

l-next=null;//建立空的单循环链表

rear=l;

printf("请输出一组数字,并以0为结束符:");

scanf("%d",x);

while(x!=0){

p=(linklist*)malloc(sizeof(linklist));//尾插入法建立循环链表

p-data=x;

rear-next=p;

rear=p;

scanf("%d",x);

}

rear-next=null;

printf("输出删除指定结点后的单循环链表为:");

while

(p-next!=null){

printf("%d

",p-data);

//输出时用空格作为数据之间的间隔

p=p-next;

return

(l);

}

建立单链表 用C语言方式

首先,你真的确定你知道什么是链表,什么是顺序表?好了,算了就按题中的顺序表来写喽(不过,我真的建议你,如果你真不清楚,请把它弄清楚,ok?)程序代码:(看上去有点多,其实算法很简单的)#includestdlib.h

#includestdio.h

#includeconio.h#define LIST_INT_SIZE 1000

#define ERROR 0

#define OK 1typedef struct {

int *elem;

int length;

int listsize;

}ListSq;typedef int Status;Status Initlist_sq(ListSq *l){

//初始化顺序表

l-elem=(int *)malloc(LIST_INT_SIZE*sizeof(int));

if(!l-elem) exit(ERROR);

l-length =0;

l-listsize=LIST_INT_SIZE;

return OK;

}Status InputList_sq(ListSq *l,int length){

//对顺序表进行输入,输入的长度为:length

//length的区间为[1,1000]

int i;

if(length 1000 ||length1) exit(ERROR);

printf("please input the data:\n");

for(i=0;ilength;i++){

scanf("%d",l-elem+i);

l-length++;

}

return OK;

}Status OutputList_sq(ListSq *l){

//把顺序表输出

int *p;

for(p=l-elem;p=(l-elem[l-length-1]);p++)

printf("%d ",*p);

return OK;

}Status ListDelete_sq(ListSq *l,int i){

//删除顺序表中位序为i的元素

//注意i的取值范围!

int *p,*pe;

if(i1 || i1000) exit(ERROR);

p=(l-elem[i+1]);

pe=(l-elem[l-length-1]);

while(p=pe){

*(p-1)=*p;

p++;

}

l-length--;

return OK;

}Status ConvertList_sq(ListSq *l){

//这个操作就是执行你题目要求的那玩意

int i,j,k;

for(i=0;il-length;i++){

k=i;

for(j=0;ji;j++)

if(l-elem[i]==l-elem[j])

ListDelete_sq(l,i);

}

return OK;

}

int main(void)

{

ListSq list;

int length,status;

printf("Creat a new SQlist:\n");

status=Initlist_sq(list);

if(!status)

{

printf("\aWarning:Failed to Creat the List\n");

getch();

exit(ERROR);

}

else {

printf("succeed to creat!\n");

printf("******** status of the list *********\n");

printf("the length is %d\nthe listsize is %d\n",list.length,list.listsize);

}

printf("Now you could input the data for the list:\n");

printf("How many datas do you want to input:");scanf("%d",length);

InputList_sq(list,length);

OutputList_sq(list);

printf("\nthe result of converting list:");

ConvertList_sq(list);

OutputList_sq(list);

putchar('\n');

return 0;

}一下是运行结果: 好了,完成任务了。。。算法不难,认真思考就搞定,望楼主坚持下去,不断努力!

对了,要是程序上有什么不懂得,hi我就可以了

用C语言实现建立一个单链表的过程,并实现打印链表中每一个元素,写出完整程序

这是个很简单的链表创建和输出

#includestdio.h

#includestdlib.h

typedef struct linkednode

{

char data;

struct linkednode *next;

}node,*link_list;//链表节点的结构及重命名

link_list creat()//创建一个链表返回类型是链表的首地址

{

link_list L;

node *p1,*p2;

char data;

L=(node*)malloc(sizeof(node));//开辟存储空间

p2=L;

while((data=getchar())!='\n')//输入回车键时结束输入

{

p1=(node*)malloc(sizeof(node));

p1-data=data;

p2-next=p1;

p2=p1;

}

p2-next=NULL;

return L;

}

void print(link_list L)//把链表输出

{

node *p;

p=L-next;

while(p!=NULL)

{

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

p=p-next;

}

printf("\n");

}

void main()

{

link_list L=NULL;

char x;

printf("请输入链表节点:\n");

L=creat();

print(L);

}

单链表的创建程序(C语言)

#include"stdio.h"

#include"malloc.h"

#define NULL 0

#define L sizeof(struct integer)

struct integer /*定义结构体*/

{

int num;

int zhengshu;

struct integer *next;

};

int n; //纪录链表的长度

struct integer *creat(void) /*创建链表*/

{

struct integer *head;

struct integer *p1,*p2;

n=0;

p1=p2=(struct integer *)malloc(L);

scanf("%d,%d",p1-num,p1-zhengshu);

head=NULL;

while(p1-num!=0)

{

n=n+1;

if(n==1) head=p1;

else p2-next=p1;

p2=p1;

p1=(struct integer *)malloc(L);

scanf("%d,%d",p1-num,p1-zhengshu);

}

p2-next=NULL;

return(head);

}

...

求一份实现单链表的基本操作的c语言程序,包括输入元素,谢谢。

#includestdlib.h

#include "nodedef.h"

#define CreateLinklistWay 1 // 0表示头插法创建链表,1表示尾插法创建链表

#if !CreateLinklistWay

/*********************************************************************

* 函数名称:linklist *CreateLinklistHead()

* 函数功能:利用头插法创建链表

* 参 数:无

* 返 回 值:创建完链表后的链表头结点

* 说 明:无

*********************************************************************/

extern linklist *CreateLinklistHead()

{

int x, i, nodeNum;

linklist *head, *temp; // 头结点与临时结点

head = (linklist *)malloc(sizeof(linklist)); // 生成表头结点

head-next = NULL; // 给表头结点的指针域赋值

printf("请输入链表中结点的个数:");

scanf("%d", nodeNum);

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

{

printf("请输入第 %d 个结点的数据:", i);

scanf("%d", x);

temp = (linklist *)malloc(sizeof(linklist)); // 生成新的结点

temp-data = x; // 对新结点的数据域赋值

// 将新结点插到头结点之后

temp-next = head-next;

head-next = temp;

}

return head; // 返回新建链表的头结点

}

#else

/*********************************************************************

* 函数名称:linklist *CreateLinklistRear()

* 函数功能:利用尾插法创建链表

* 参 数:无

* 返 回 值:创建完链表后的链表头结点

* 说 明:无

*********************************************************************/

extern linklist *CreateLinklistRear()

{

int x, i, nodeNum;

linklist *head, *rear, *temp; // 定义头结点、尾结点和临时结点

head = (linklist *)malloc(sizeof(linklist)); // 生成表头结点,表头结点不存放数据

head-next = NULL; // 将表头结点的指针域赋值为NULL

rear = head; // 将表头结点赋值给表尾结点

printf("请输入链表中结点的个数:");

scanf("%d", nodeNum);

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

{

printf("请输入第 %d 个结点的数据:", i);

scanf("%d", x);

temp = (linklist *)malloc(sizeof(linklist)); // 生成新的结点

temp-data = x; // 新增结点的数据域

temp-next = NULL; // 新增结点的指针域(由于是尾插法,所以插入的结点都在尾部,即指针域为NULL)

rear-next = temp; // 使前一个结点指向新增结点(head-next=temp)

rear = temp; // 将新增结点赋值给尾结点(尾插法,插入的结点在尾部)(rear=head-next)

}

//rear-next = NULL; // 将尾结点的指针域赋值为空(为了方便检验链表是否为空链表)

return head; // 返回头结点

}

#endif

(责任编辑:IT教学网)

更多

推荐Flash动画制作教程文章