㈠ 怎样创建一个线性链表(c语言)
/*线性链表的构建*/
#include<stdio.h>
#include<stdlib.h>
typedefstructLnode
{
intdata;
structLnode*next;
}Lnode;
intmain()
{
Lnode*H,*p1,*p2,*p3,*p4;
H=(Lnode*)malloc(sizeof(Lnode));
p1=(Lnode*)malloc(sizeof(Lnode));
p2=(Lnode*)malloc(sizeof(Lnode));
p3=(Lnode*)malloc(sizeof(Lnode));
p4=(Lnode*)malloc(sizeof(Lnode));
p1->data=132;
p1->next=p2;
p2->data=942;
p2->next=p3;
p3->data=158;
p3->next=182;
p4->data=231;
p4->next=NULL;
printf("%d,%d ",p1->data,p3->data);
printf("%d",p1->next->data);
return0;
}
㈡ c语言中链表是如何创建的
时间关系不能详细说,先要构建节点结构,这个结构包括前、后指针和数据变量,然后依次实例化一些节点,用前后指针连接起来
㈢ c语言创建链表
1、你使用了malloc函数但没有导入头文件malloc.h。
2、函数DATA *create(int n);没有申明就直接调用。
(另外main函数中DATA* head;给个初值NULL,避免野指针。)
修改以上内容,亲测可运行。
㈣ 怎么建立一个多级链表,c语言
你可以建立一个链表节点的数据结构
typedefstructNode{
intdata;
structNode*ptr;
}Node;
然后在一个一个添加。你只需要记录好头节点。
Node*head=NULL;
我们插入第一个节点
Node*newnode=(Node*)malloc(sizeof(Node));
newnode->data=1;
newnode->ptr=NULL;
把这个节点加入到head或者其他节点下面
head=newnode
㈤ c语言创建单链表
#include<stdio.h>
#include<stdlib.h>
/*线性表*/
struct TLink {
int data;
struct TLink * next;
};/*end struct TLink*/
/*生成新元素*/
struct TLink * new_item(int number)
{
struct TLink * r = 0;
r = (struct TLink *)malloc(sizeof(struct TLink));
r->data = number;
r->next = 0;
return r;
}/*end new_item*/
/*在线性表中查询数据*/
struct TLink * lookup(struct TLink * root, int number)
{
struct TLink * h = root;
while(h) {
if (h->data == number) return h;
h = h->next ;
}/*end lookup*/
return 0;
}
/*在线性表中追加一个数据*/
void append(struct TLink * * root, int number)
{
struct TLink * r = 0, * n = 0;
if (!root) return ;
/*不记录重复元素*/
if (lookup(*root, number)) return;
/*如果表为空则新建表*/
r = *root;
if (!r) {
*root = new_item(number);
return ;
}/*end if*/
/*为保证为有序线性表,如果数据比表头还小则作为表头*/
if (number < r->data ) {
n = new_item(number);
n->next = r;
*root = n;
return ;
}/*end if*/
/*在有序线性表中查找位置插入元素*/
while(r) {
n = r->next ;
/*如果已经是表尾则直接追加*/
if (!n) {
n = new_item(number);
r->next = n;
return ;
}/*end if*/
/*在中央某处插入*/
if (number < n->data ) {
r->next = new_item(number);
r->next->next = n;
return ;
}/*end if*/
r = n;
}/*end while*/
}/*end append*/
/*打印有序线性表*/
void print(struct TLink * root)
{
struct TLink * r = root;
printf("【");
while(r) {
printf("%d ", r->data );
r = r->next ;
}/*end while*/
printf("\b】\n");
}/*end print*/
/*将有序线性表h1合并至有序线性表h0,并销毁线性表h1*/
void merge(struct TLink ** h0, struct TLink ** h1)
{
struct TLink * h = 0, * k = 0;
if (!h0 || !h1) return ;
h = *h1;
while(h) {
append(h0, h->data );
k = h;
h = h->next ;
free(k);
}/*end h*/
h1 = 0;
}
int main(void)
{
int i = 0; struct TLink * x=0, *y = 0;
int a[] = {8,4,3,9,5,1};
int b[] = {7,2,1,5,6,0};
printf("原数据为:\n数组A:【");
for(i = 0; i < 6; i++) {
printf("%d ", a[i]);
append(&x, a[i]);
}/*next*/
printf("\b】\n数组B:【");
for(i = 0; i < 6; i++) {
printf("%d ", b[i]);
append(&y, b[i]);
}/*next*/
printf("\b】\n转换为有序线性表\nA:");
print(x);
printf("B:");
print(y);
printf("AB合并后为:");
merge(&x, &y);
print(x);
return 0;
}
/*以上是顺序线性表的合并程序,逆序只需将插入条件从小于改为大于即可。
合并结果如果要保留,把合并函数的lookup调用删除即可*/
㈥ C语言空函数怎么创建链表
头指针是必须传递的,无论是你子函数返回值也好,子函数的参数是头指针也好
㈦ c语言中怎么根据文件建立一个链表
依次是编号
名字
数据是么?你需要先建立一个creat.txt文件,然后对文件进行操作~!
头文件用#include<stdio.h>
#include<stdlib.h>这两个,然后定义个文件指针
FILE
*fp;
用fopen("creat.txt","r")进行写入,写入用fscanf(fp,"%f%s%f",&id,&name,&grade);操作完成关闭文件fclose(fp);这样就行了~!在链表里插入这些东西就可以进行写入了。。具体还是靠自己写,要考试了,具体程序没有时间给你写。。
㈧ c语言创建一个链表
定义一个指针 pHead,该指针指向的类型是 struct Node 类型,给这个指针赋值NULL;
NULL其实就是0,相当于 struct Node *pHead = (struct Node *)0
㈨ C语言中怎样建立链表
参考以前写的这个吧,写的不好,你修改吧
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#define CD sizeof(struct Biao)
struct Biao
{
int num;
struct Biao *next;
};
int m,x;
int main()
{
struct Biao *jianli();
void paixu(struct Biao *n);
void chashu(struct Biao *n);
void shanshu(struct Biao *n);
void qiupingjun(struct Biao *n);
void tuichu();
int n;
struct Biao *t;
printf("1.建立链表\n2.排序\n3.插数\n4.删数\n5.求平均值\n");
printf("请输入选项:\n");
for(;;)
{
scanf("%d",&n);
switch(n)
{
case 1:t=jianli();break;
case 2:paixu(t);break;
case 3:chashu(t);break;
case 4:shanshu(t);break;
case 5:qiupingjun(t);break;
case 6:tuichu();break;
default:printf("输入错误!请重新输入\n");
}
}
}
struct Biao *jianli()
{
int i,j;
printf("建立链表,请输入数据:\n");
struct Biao *head,*p1,*p2;
p1=p2=(struct Biao * )malloc(CD);//if(p1==NULL)建立链表失败
for(i=0;i<=100;i++)
{
if(i==0)
{
head=p1;
p2->next=p1=(struct Biao * )malloc(CD);
p2=p1;
continue;
}
if(p1==NULL)
break;
else
{
scanf("%d",&p1->num);
if(p1->num==-1)
{
p2->num=NULL;
break;
}
p2->next=p1=(struct Biao * )malloc(CD);
p2=p1;
}
}
if(head->next->num==NULL)
printf("您建立了一个空链表\n");
else
{
printf("共有数据:%d\n",i-1);
m=i-1;
printf("输出链表:\n");
p1=head->next;
for(j=0;j<i-1;j++)
{
printf("%d ",p1->num);
p1=p1->next;
}
}
printf("\n");
return(head);
}
void paixu(struct Biao *n)
{
int i,j,a,temp;
a=m;
struct Biao *p1,*p2,*tp;
p2=p1=n->next;
printf("从小到大排序结果:\n");
for(i=0;i<a-1;i++)
{
p1=p2;
tp=p1;
for(j=i+1;j<a;j++)
{
if((p1->next->num)<(tp->num))
{
tp=p1->next;
}
p1=p1->next;
}
temp=tp->num;tp->num=p2->num;p2->num=temp;
p2=p2->next;
}
p1=n->next;
for(i=0;i<a;i++)
{
printf("%d ",p1->num);
p1=p1->next;
}
printf("\n");
}
void chashu(struct Biao *n)
{
int a,i,j;
struct Biao *p1,*p2,*tp;
m=m+1;
x=m;
a=m;
p1=n;
printf("请插入数字:\n");
p2=(struct Biao *)malloc(CD);
scanf("%d",&p2->num);
p1=n->next;
for(i=0;i<a-1;i++)
{
if(p1->num<=p2->num&&p1->next->num>p2->num)
{
tp=p1->next;
p1->next=p2;
p2->next=tp;
break;
}
if(p1->num<p2->num&&p1->next->num>p2->num)
{
tp=p1->next;
p1->next=p2;
p2->next=tp;
break;
}
if(n->next->num>p2->num)
{
tp=n->next;
n->next=p2;
p2->next=tp;
break;
}
p1=p1->next;
}
p1=n;//
for(i=0;i<a-1;i++)
{
p1=p1->next;
}
if(p1->num<=p2->num)
{
tp=p1->next;
p1->next=p2;
p2->next=tp;
}//算法不简便
printf("插入后的数据:\n");
p1=n->next;
for(i=0;i<a;i++)
{
printf("%d ",p1->num);
p1=p1->next;
}
printf("\n");
printf("数据个数:%d\n",a);
}
void shanshu(struct Biao *n)
{
int a,i,j;
a=x;
struct Biao *p1,*p2;
printf("请输入要删除的数:\n");
scanf("%d",&j);
for(;;)
{
p1=n;
for(i=0;i<a;i++)
{
if(p1->next->num==j)
{
p2=p1->next;
p1->next=p1->next->next;
a-=1;
x-=1;
break;
}
p1=p1->next;
}
if(i==a)
break;
}
printf("结果:\n");
p1=n->next;
for(i=0;i<a;i++)
{
printf("%d ",p1->num);
p1=p1->next;
}
printf("\n");
printf("剩余数据个数:%d\n",x);
}
void qiupingjun(struct Biao *n)
{
int s,i;
struct Biao *p1;
s=0;
p1=n->next;
for(i=0;i<x;i++)
{
s+=p1->num;
p1=p1->next;
}
printf("平均值为:%f\n",s*1.0/x);
}
void tuichu()
{
exit(0);
}
㈩ 在c语言中如何创建一个链表
typedef struct Node
{
int data;
struct Node*pNext;
}Node;
Node*pNode=(Node*)malloc(sizeof(Node));