王道ch 1-シングルチェーン表の定義、作成、番号で検索し、値で検索し、挿入、削除し、表の長さを求めます.
2012 ワード
定義
typedef struct LNode {
int data;
struct LNode* next;
}LNode,*LinkList;
を作成します.//
LinkList headInsert(LinkList& L)
{
int x; LNode* s;
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
cin >> x;
while (x != 9999)
{
s = (LNode*)malloc(sizeof(LNode));
s->data = x;
s->next = L->next;
L->next = s;
cin >> x;
}
return L;
}
//
LinkList tailInsert(LinkList& L)
{
int x;
L = (LinkList)malloc(sizeof(LNode));
LNode* s, * r = L;
cin >> x;
while (x != 9999)
{
s = (LNode*)malloc(sizeof(LNode));
s->data = x;
r->next = s;
r = s;
cin >> x;
}
r->next = NULL;
return L;
}
番号で検索し、値で検索します.//
LNode* GetElem(LinkList& L,int i)
{
LNode* p = L->next;
int j = 1;
if (i == 0)
return L;
if (i < 0)
return NULL;
while (p&&jnext; j++;
}
return p;
}
// e
LNode* LocatedElem(LinkList& L, int x)
{
LNode* p = L->next;
while (p)
{
if (p->data == x)
return p;
p = p->next;
}
return NULL;
}
挿入// i
LinkList H_Insert_x(LinkList& L, int i)
{
int x;
LNode*s,*p;
p=GetElem(L,i-1);
s = (LNode*)malloc(sizeof(LNode));
cin >> x;
s->data = x;
s->next = p->next;
p->next = s;
return L;
}
int main()
{
LinkList L;
tailInsert(L);
H_Insert_x(L, 2);
LNode* p = L->next;
while (p)
{
cout << p->data << " ";
p = p->next;
}
return 0;
}
削除// i
LinkList Delete(LinkList& L, int i)
{
int x;
LNode *p,*q;
p = GetElem(L, i - 1);
q=p->next ;
x = q->data;
p->next = q->next;
free(q);
return L;
}
表の長さを求める//
int count(LinkList& L)
{
if (L->next == NULL)
return 0;
int count=1;
LNode *p=L->next;
while (p->next)// p , p
{
p = p->next; count++;
}
return count;
}