15+曲文辉


私信TA

用户名:BoyHonest

访问量:35418

签 名:

等  级
排  名 302
经  验 5593
参赛次数 3
文章发表 52
年  龄 0
在职情况 学生
学  校 河南农业大学
专  业

  自我简介:

解题思路:

注意事项:

参考代码:

#include<stdio.h> #include<malloc.h> #define ElemType int  //假定线性表中数据元素为int类型 typedef  struct  

LNode{    ElemType	data;    //结点的数据域  struct	LNode	*next;   //结点的指针域   }LNode, 

*LinkList;  //访问线性链表  void ListTraverse_L(LinkList L, void (*visit)(ElemType)) { /*声明指针p(用于指

向当前访问数据元素) */ LNode *p;	/* 将p定位于L中的首元结点 */ p=L->next; /* 若p指向的结点存在 */ 

while(p) { /* 调用visit()方法进行访问该结点 */ visit(p->data);	/* p指向下一个结点 */ p=p->next; } }  //线

性链表的读取 int GetElem_L(LinkList L, int i, ElemType *e) { /* 初始化,p指向第一个结点,j为计数器*/ 

LinkList p =  L->next;  int j = 1;  /* 顺指针向后查找,直到 p指向第 i个元素或 p 为空 */ while (p && j<i ) { 

   p = p->next;   j++; } if( !p || i<1 ) return 0;   // 第 i 个元素不存在 *e = p->data;   // 取第 i 个元素 

return 1; }  //线性链表插入算法 int ListInsert_L(LinkList L, int i, ElemType e){    /*在线性链表L中第 i个位

置之前插入新元素e*/ LinkList p,s; int j; if(i<1) return 0; //1.寻找第i-1个结点 p=L; j=0;    while(p && 

j<i-1){ p=p->next;    ++j; } if( !p )  return 0;  //i大于表长加1 //2.生成新结点   	s=(LinkList)

malloc(sizeof(LNode));   	s->data=e; //3.插入L中   	s->next=p->next;  	p->next=s;   	

return 1; } //线性链表的删除 int ListDelete_L(LinkList  L,int i, ElemType *e) {   /*在带头结点的单链表L中删

除第i个元素,并由e返回其值   成功删除返回1,否则返回0*/ LinkList p,q;  int j=0; /* 1.寻找第i个结点,并令p指向

其前趋 */  	p = L; while (p->next && j < i-1) {     p = p->next;       ++j;     } if (!(p->next) || 

i<1) return 0;   /*删除位置非法*/ q = p->next;   p->next = q->next;  *e = q->data;   	free(q);   return 

1;  }  //建立线性链表  //逆位序输入n个元素的值,建立带头结点的单链线性表L  LinkList CreateList_L(int n) { 

LinkList L,p; //1. 建立一个带头结点的单链表 L=(LinkList)malloc(sizeof(LNode)); L->next=NULL; //2. 逆位序生

成n个新结点  ElemType e; while(n--) { scanf("%d",&e);  p=(LNode*)malloc(sizeof(LNode)); p->data=e; p-

>next=L->next; L->next=p; } return L;   }


 

0.0分

3 人评分

  评论区

  • «
  • »