c语言用单链表基本操作实现

实验内容:建立10个数据元素的线性表L={1,2,3…10}指定在第2位置插入元素25,然后删除第4个位置上的元素,分别显示各步骤结果#include<stdio.h>#... 实验内容:建立10个数据元素的线性表L={1,2,3…10}指定在第2位置插入元素25,然后删除第4个位置上的元素,分别显示各步骤结果

#include<stdio.h>

#include<stdlib.h>

typedef int ElemType;

typedef struct Node

{

ElemType data;

struct Node *next;

} LNode,*LinkList;

void inilialist(LNode **L)

{

if((*L=(LNode *)malloc(sizeof(LNode)))==NULL)exit(1);

(*L)->next=NULL;

}

void insert(LNode *L,int i,ElemType x)

{

LNode *s,*p=L;

int j=0;

while(j!=(i-1)&&p!=NULL)

{p=p->next;

j++;

}

if(p==NULL)

{printf("序号出错!");

}

else

{if((s=(LNode*)malloc(sizeof(LNode)))==NULL) exit(1);

s->data=x;

s->next=p->next;

p->next=s;

}

}

void Delete(LNode *L,int i)//删除值为x的结点

{

LNode *p;

LNode *u;

int j=0;

p=L;

while(j!=i-1&&p!=NULL)

{p=p->next;

j++;}

if(p==NULL||p->next==NULL)

{printf("删除序号出错!");

}

else

{u=p->next;

p->next=u->next;

free(u);

}

}

void main(){

//your code will be written here6 /*这里是所要补充代码的地方

}
展开
 我来答
碧海风云

2019-04-09 · 碧海风的秘密小据点!
碧海风云
采纳数:909 获赞数:10281

向TA提问 私信TA
展开全部

补充销毁链表、打印链表内容的两个函数。主函数已补上建立、插入、删除、打印诸代码。

#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>

typedef int ElemType;

typedef struct Node {
ElemType data;
struct Node *next;
} LNode, *LinkList;

void inilialist (LNode **L) {
if((*L=(LNode *)malloc(sizeof(LNode)))==NULL)
exit(1);
(*L)->next=NULL;
}

/* 销毁 */
/* 初始条件:单链表L已存在。操作结果:销毁单链表L */
void destroyList (LinkList L) {
LinkList p, q;

p = L->next; /* p指向第一个结点 */
while (p) { /* 没到表尾 */
q = p->next;
     free (p);
     p = q;
}
free (L);
}

void insert (LNode *L, int i, ElemType x) {
LNode *s, *p=L;
int j=0;
while(j!=(i-1)&&p!=NULL) {
p=p->next;
j++;
}

if(p==NULL) {
printf("序号出错!");
}
else {
if((s=(LNode*)malloc(sizeof(LNode)))==NULL)
exit(1);
s->data=x;
s->next=p->next;
p->next=s;
}
}


void Delete (LNode *L, int i) { //删除值为x的结点
LNode *p;
LNode *u;
int j=0;
p=L;
while(j!=i-1&&p!=NULL) {
p=p->next;
j++;
}
if (p==NULL||p->next==NULL) {
printf("删除序号出错!");
}
else {
u=p->next;
p->next=u->next;
free(u);
}


/* 打印链表内容 */
/* 初始条件:单链表L已存在。操作结果:当链表不为空时,打印链表内容并返回OK,否则返回ERROR */
int printList (LinkList L) {
LinkList p = L->next; /* p指向第一个结点 */

while (p) {
printf ("%d\t", p->data);
p = p->next;
}
putchar ('\n');
return 1;
}

int main (void) {
LinkList L;
int i; 

/* 初始化单链表 */
inilialist (&L);

/* 插入10个元素 */
printf ("建立10个数据元素的线性表:\n"); 
for (i=1; i<=10; i++)
insert (L, i, i);
printList (L);
putchar ('\n');

puts ("第2位置插入元素25:");
insert (L, 2, 25);
printList (L);
putchar ('\n');

puts ("删除第4个位置上的元素:");
    Delete (L, 4);
    printList (L);
    putchar ('\n');
    
destroyList (L); 

getch (); /* 屏幕暂留 */ 
return 0 ;
}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式