关于链表的c语言程序

来源:百度知道 编辑:UC知道 时间:2024/06/24 11:54:10
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct node
{int data;
struct node *next;
}slink;

int n;

slink *creat(); //创建链表

int insert(slink *head,int i,int x);//在结点i之前播放一个数x

int del(slink *head,int i,int *x); //删除第i个结点并返回该结点上的数值

slink *get(slink *head,int i); //查找第i个结点,并返回

int length(slink *head); //求链表的长度

void print(slink *head); //输出链表

int main()
{slink *head;
int de,*num=0,ins,len; //de为要删除的结点,ins为要插入的结点

printf("input records:\n");
head=creat();
print(head);

printf("\ninput the delete number:(the number<%d)",n);
scanf("%d",&de);
if(del(head,de,num)==1)
{print(head);
printf("%d",*num);
}
else
printf("delete failure!");

printf("\ninput the inset record:&qu

//兄弟,好好看看带头结点和不带头结点的链表的区别,还有如果你设了全局变量n记录链表长度,length()这个函数就多余了,你可以在删除数据时把n-1,插入数据时把n+1就行了,我简单改了改,你看看吧!!
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct node
{
int data;
struct node *next;
}slink;

int n;

slink *creat(); //创建链表

int insert(slink *head,int i,int x);//在结点i之前播放一个数x

int del(slink *head,int i,int *x); //删除第i个结点并返回该结点上的数值

slink *get(slink *head,int i); //查找第i个结点,并返回

int length(slink *head); //求链表的长度

void print(slink *head); //输出链表

int main()
{
slink *head;
int de,num=0,ins,len; //de为要删除的结点,ins为要插入的结点
//这里num要用整形数,不用指针
printf("input records:\n");
head=creat();
print(head);

printf("\ninput the delete number:(the number<%d)",n);
scanf("%d",&de); //这里少了一个&符
if(del(head,de,&num)==1)
{