线性表的基本操作(二)

  1. 设计整数单链表的基本运算程序,并用相关数据进行测试。具体步骤如下:

(1)定义单链表类型SLinkNode;

(2)编写子函数InitList(SLinkNode *&L),实现单链表的初始化;

(3)编写子函数CreateList(SLinkNode *&L),实现单链表的创建,从键盘上依次输入整型数据元素,创建单链表;

(4)编写子函数InsElem(SLinkNode *&L, int x, int i),实现单链表中的插入运算;

(5)编写子函数DelElem(SLinkNode *&L, int i),实现单链表中的删除运算;

(6)编写子函数GetLength(SLinkNode *L),实现计算单链表的长度;

(7)编写子函数DispList(SLinkNode *L),实现单链表的打印输出;

(8)编写主函数,在主函数中调用上述子函数,输出相应的结果。

#include<iostream>
#include<malloc.h>
using namespace std;
typedef int ElemType;
typedef struct node
{
 ElemType data;
 struct node* next;
}SLinkNode;
void InitList(SLinkNode*& L)
{
 L =(SLinkNode*)malloc(sizeof(SLinkNode));
  L->next = NULL;
}
void CreatListF(SLinkNode*& L, ElemType a[], int n)
{
 SLinkNode* s,* tc;
 int i;
 L = (SLinkNode*)malloc(sizeof(SLinkNode));
 tc = L;
 for (i = 0; i < n; i++)
 {
  s = (SLinkNode*)malloc(sizeof(SLinkNode));
  s->data = a[i];
  tc->next = s;
  tc = s;
 }
 tc->next = NULL;
}
int InsElem(SLinkNode*& L, ElemType x, int i)
{
 int j = 0;
 SLinkNode* p = L, * s;
 if (i <= 0) return 0;
 while (p != NULL && j < i - 1)
 {
  j++;
  p = p->next;
 }
 if (p == NULL)
  return 0;
 else
 {
  s = (SLinkNode*)malloc(sizeof(SLinkNode));
  s->data = x;
  s->next = p->next;
  p->next = s;
  return 1;
 }
}
int DelElem(SLinkNode*& L, int i)
{
 int j = 0;
 SLinkNode* p = L, * q;
 if (i <= 0)
  return 0;
 while (p != NULL && j < i - 1)
 {
  j++;
  p = p->next;
 }
 if (p == NULL)
  return 0;
 else
 {
  q = p->next;
  if (q == NULL)
   return 0;
  else
  {
   p->next = q->next;
   free(q);
   return 1;
  }

 }
}
int GetLength(SLinkNode* L)
{
 int i = 0;
 SLinkNode* p = L->next;
 while (p != NULL)
 {
  i++;
  p = p->next;
 }
 return 1;
}
void DispList(SLinkNode* L)
{
 SLinkNode* p = L->next;
 while (p != NULL)
 {
  printf("%d", p->data);
  p = p->next;
 }
 printf("\n");
}
int main()
{
 SLinkNode* L;
 InitList(L);
 ElemType a[100];
 int i, n;
 cout << "输入元素个数:" << endl;
 cin >> n;
 cout << "依次输入元素:" << endl;
 for (i = 0; i < n; i++)
 {
  cin >> a[i];
 }
 CreatListF(L, a, n);
 int x, b, c;
 cout << "请输入插入元素" << endl;
 cin >> x;
 cout << "请输入插入位置" << endl;
 cin >> b;
 InsElem(L, x, b);
 cout << "请输入删除位置" << endl;
 cin >> c;
 DelElem(L, c);
 DispList(L);
 return 0;
}

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值