当前位置:编程学习 > C/C++ >>

谁能用C语言编一个链式表

用结构体编程,
答案:
#include "stdlib.h"                 //头文件
#include "stdio.h"
typedef int datatype; //定义结构体
typedef struct node
{
datatype data;
struct node *next;
}linklist;

linklist *head,*s,*r; //链式对象指针
linklist *creatlist() //建立链式表
{
int x;
linklist *head,*s;
head=NULL; //把第一个数据设为空
printf("please enter your number is:");
scanf("%d",&x);
while(x!=-1) //当你输入-1后此循环结束
{
s=(linklist*)malloc(sizeof(linklist));
s->data=x; //把输入的数据依次送给指针
s->next=head;
head=s;
scanf("%d",&x);
}
return head; //反回为头指针

}
void print(linklist *head) //设置找印函数
{
linklist *r=head->next;
printf("the number is:");
printf("%d ",*head);
while(r!=NULL)
{
printf("%d ",r->data);
r=r->next;
}
printf("\n");
}

void main()
{
linklist *C07511head;
C07511head=creatlist();
print(C07511head);
}
#include "stdio.h"
#include "stdlib.h"
#define NULL 0
typedef struct node{
char data;
struct node *next;
}linklist;
main(){
void create(linklist *L);
void list(linklist *L);
int find(linklist *L,char ch);
int delete1(linklist *L,char x);
void del(linklist *L);
linklist *L;
char ch,x;
int s,n;
L=(linklist *)malloc(sizeof(linklist));
L->next=NULL;
printf("Create a linklist:\n");
create(L);
getchar();
printf("List the linklist:");
list(L);
printf("\n Input ch=");
scanf("%c",&ch);
getchar();
n=find(L,ch);
printf("\n n= %d",n);
printf("\n Input x= ");
scanf("%c",&x);
getchar();
s=delete1(L,x);
printf("\n S=%d",s);
printf("\n List the new linklist:");
list(L);
printf("\n Delete list:");
del(L);
getch();
}
void create(linklist *L){
char ch;
linklist *r,*s;
r=L;
printf("Typr '@' to end\n");
printf("Input the value of node:");
ch=getchar();
while(ch!='@'){
s=(linklist *)malloc(sizeof(linklist));
s->data=ch;
r->next=s;
r=s;
ch=getchar();
}
r->next=NULL;
}
void list(linklist *L){
int i=1;
linklist *p;
p=L->next;
if(!p){
printf("\n Empty list !");
return;
}
do{
printf("\n Node number %d,value %c",i++,p->data);
p=p->next;
}while(p);
}
int find(linklist *L,char ch){
linklist *p=L->next;
int s=0;
while(p){
if(p->data==ch)s=s+1;
p=p->next;
}
return(s);
}
int delete1(linklist *L,char x){
int s=0;
linklist *p,*q;
p=L;q=L->next;
while(q){
if(q->data==x){
p->next=q->next;
free(q);
q=p->next;
s++;
}
else{
p=q;
q=q->next;
}
}
return(s);
}
void del(linklist *L){
linklist *p=L,*q;
while(p){
q=p->next;
free(p);
p=q;
}
}
struct LNode{
int data;//自己换个类型
LNode *next;
}LNode,*LinkList;

上一个:用C语言做循环队列的操作验证
下一个:怎样学好单片机?和C语言一起学可以吗?

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,