#include<iostream>
#include<stdlib.h>
using namespace std;
typedef int ElemType; //定義資料型別
typedef struct Node
{
ElemType data; //存盤鏈表資料
struct Node* next; //next為指標域,存放其后繼結點的地址。
}LinkList;
//頭插法創建單鏈表
void CreatList_L(LinkList*& L, ElemType a[], int n)
{
LinkList* s;
int i;
L = (LinkList*)malloc(sizeof(LinkList)); //創建頭節點
L->next = NULL;
for (int i = 0;i < n;i++)
{
s = (LinkList*)malloc(sizeof(LinkList));
s->data = a[i];
s->next = L->next; //s指向下一個
L->next = s; //再將s給單鏈表L的表頭
}
}
//尾插法創建單鏈表
void CreatList_Tail(LinkList*& L, ElemType a[], int n)
{
LinkList* s,* r;
int i;
L = (LinkList*)malloc(sizeof(LinkList)); //創建頭節點
L->next = NULL;
for (int i = 0;i < n;i++)
{
s = (LinkList*)malloc(sizeof(LinkList));
s->data = a[i];
r->next = s;
r = s;
}
r->next = NULL;
}
//按值查找
int Locate(LinkList* L, ElemType e)
{
LinkList* p = L->next;
int j = 0;
while (p != NULL && p->data != e)
{
p = p->next;
j++;
}
if (p == NULL)
return 0;
else
return j;
}
//在單鏈表的第i個元素之前插入元素x
int InsElem(LinkList* L, ElemType x, int i)
{
int j = 0;
LinkList* p = L, * s;
if (i <= 0)
return 0;
while (p != NULL && j < i - 1) //查找第i-1個節點*p
{
j++;
p = p->next;
}
if (p == NULL)
return -1; //未找到節點回傳-1
else
{
s = (LinkList*)malloc(sizeof(LinkList));//創建新節點
s->data = x; //存放元素x
s->next = p->next;
p->next = s;
return L;
}
}
uj5u.com熱心網友回復:
int InsElem(LinkList* L, ElemType x, int i) ====》》》回傳值是int型別{
int j = 0;
LinkList* p = L, * s;
if (i <= 0)
return 0;
while (p != NULL && j < i - 1) //查找第i-1個節點*p
{
j++;
p = p->next;
}
if (p == NULL)
return -1; //未找到節點回傳-1
else
{
s = (LinkList*)malloc(sizeof(LinkList));//創建新節點
s->data = x; //存放元素x
s->next = p->next;
p->next = s;
return L; ====》回傳的是鏈表指標 與 int不匹配
}
uj5u.com熱心網友回復:
修改下函式定義呀如果未找到節點就別回傳-1了,回傳NULL
uj5u.com熱心網友回復:
要么改定義,要么改回傳啊。。。看你自己需要什么,你要是需要int判斷,那就改回傳唄,你要是要回傳指標去賦值使用,那就改定義,改成指標型別。錯誤回傳NULL轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/72857.html
標籤:C語言
上一篇:求助 資料結構 單鏈表
